Currying est:
En mathématiques et de l'informatique, corroyage est la technique de traduction de l'évaluation d'une fonction qui prend plusieurs arguments (ou un tuple d'arguments) dans l'évaluation d'une séquence de fonctions, chacune avec un seul argument. Il a été introduit par Gottlob Frege, développé par Moses Schönfinkel, et développé par Haskell Curry.
source Wikipedia
maintenant on pourrait dire que, dans Haskell il y a jamais plus d'un argument à une fonction (vous pouvez bien sûr avoir tuples - voir ci-dessous) - Dans un sens tous fonctions dans Haskell sont déjà carried (ou ne peut être défini de telle manière).
Bien sûr, il y a curry
et uncurry
- mais ceux-ci agissent sur tuples:
curry :: ((a, b) -> c) -> a -> b -> c
curry f x y = f (x, y)
et je pourrais faire valoir qu'un tuple est juste un argument aussi;)
Sur le plan conceptuel, vous avez bien sûr raison, comme l'ont souligné les augustes!
Mais malheureusement il y a des problèmes (see Monomorphism Restriction par exemple) où cette égalité ne tient pas (si vous n'ajoutez pas une signature de type):
add x y = x + y === add = \x -> \y -> x + y
Oui, Haskell 'fxy = ...' est défini pour signifier 'f = \ x -> \ y -> ...'. – augustss
Pouvez-vous clarifier ce que vous demandez, exactement? – dfeuer