He estado leyendo sobre Haskell y me cuesta entender cómo se manejan las definiciones de funciones en este lenguaje.¿Por qué sum x y es del tipo (Num a) => a -> a -> a en Haskell?
Digamos que estoy definiendo una función sum
:
let sum x y = x + y
si consulto Haskell para su tipo
:t sum
consigo
sum :: (Num a) => a -> a -> a
- ¿Qué significa el operador
=>
? ¿Tiene algo que ver con las expresiones lambda? Así es como se señala que lo que sigue al operador=>
es uno, en C#. - ¿Qué significa
a -> a -> a
? A través de la inspección ocular en una serie de funciones diferentes que he estado probando, parece que ela -> a
inicial son los argumentos y el-> a
final es el resultado de la función suma. Si eso es correcto, ¿por qué no algo como(a, a) -> a
, que parece mucho más intuitivo?
Si desea Comprenda Haskell, será mejor que obtenga una (buena) presentación en lugar de preguntarle SO a cada parte del idioma. http://stackoverflow.com/questions/1012573/how-to-learn-haskell/1016986#1016986 enlaces a algunos buenos recursos y tiene más consejos. – delnan