Ich habe den Eindruck, dass Sie an einem interessanten Problem arbeiten.
Ihre Beispielfunktion make-adder (umgeschrieben ohne let-Bindungen)
(defn make-adder [x]
"Returns a function that returns the sum of x and yet to be supplied z."
(fn [z] (+ z x))))
gibt eine Funktion zurück, die x und z summiert, wobei make-adder bereits mit einem Wert aufgerufen worden sein muss. Ich glaube, Ihr Beispiel implementiert die Clojure-Teilfunktion, die ziemlich cool ist.
Hier ist Ihre make-adder-Funktion so umgeschrieben, dass sie ihre beiden Parameter addiert und keine Funktion zurückgibt (so dass wir partial in add2 verwenden können),
(defn make-adder
"Returns sum of x and y."
[x y]
(+ x y))
und hier ist add2 umgeschrieben unter Verwendung von partial mit 2 als x-Parameter:
(def add2 (partial make-adder 2))
Wenn ich anrufe (add2 2)
die Antwort lautet 4, (add2 3)
ist die Antwort 5 und so weiter.