2012-09-27 14 views
5

En Haskell todas las funciones están originalmente al curry, ¿verdad?Haskell - Acerca de Curried

Entonces, veamos la función max, y escribiré lo que entiendo acerca de cómo funciona esto.

Cuando escribo algo como esto:

max 4 5 

Lo que pasa es que se crea una nueva funcion que internamente tiene un valor de 4, que a su vez recieves un valor, por lo que esta función se aplica a 5 y una correcta el valor es devuelto?

¿He dicho algo mal de alguna manera o es esto correcto?

+4

Recuerde amigos: justifique sus votos bajos en los comentarios. –

+0

Supongo que se deben a que la pregunta tiene errores gramaticales, lo que no es una buena razón para rechazar ... si la pregunta es difícil de entender, solicite una aclaración. –

+1

No puede denegar el conocimiento perdido en un sitio de preguntas y respuestas, pero puede hacerlo por falta de esfuerzo; sin embargo, creo que la pregunta demuestra una buena comprensión y un esfuerzo claro (exitoso) para resolver el problema. He corregido parte de la gramática en sujeto-verbo-objeto, porque object-verb-subject estaba algo oscureciendo el significado. – AndrewC

Respuesta

9

Eso es correcto. Usted puede recordar lo que tiene que ver con currificación memorizando dos de sus identidades más importantes:

-- Function type right-associativity: 
a -> b -> c = a -> (b -> c) 

-- Function application left-associativity: 
f x y = (f x) y 

Estas dos identidades trabajar juntos y producir un lenguaje al curry.

+0

@ user428691 Entonces 'max 4 5' es la abreviatura de '(max 4) 5' y' max 4 :: Integer -> Integer', lo que significa que es una función, como dijiste. – AndrewC

+0

Perfecto, gracias – elf