Currying

Från Unix.se, den fria unixresursen.

Currying är ett koncept som innebär att man gör om en funktion som tar n argument till en funktion som tar ett argument och returnerar en funktion som tar n-1 argument. Vissa funktionella språk (ML, Haskell) har särskild syntax för detta, men det kan göras i alla (t.o.m. Perl och Tcl). Exempel (i Lisp):

(lambda (x) (* x 2))

Det här skapar en funktion som fördubblar sitt argument. Vi kan också abstrahera bort curryandet till en funktion:

(defun curry (f &rest a) (lambda (&rest b) (apply f `(,@a ,@b))))
(curry '* 2)
Personliga verktyg