Warum sind Clojures `let` und` for` beide Monaden?
In dieser Diskussion Brian Marick macht den Punkt, dasslet
undfor
sind Monaden in Clojure:
Das heißt, dieJa wirklich Allzweckmonaden neigen dazu, als spezielle Formen in die Sprache geschrieben zu werden. Clojure'slet
undfor
sind beide Monaden, aber das muss man nicht wissen, um sie zu benutzen.
Das istlet
user=> (let [c (+ 1 2)
[d e] [5 6]]
(-> (+ d e) (- c)))
8
Das istfor
user=> (for [x [0 1 2 3 4 5]
:let [y (* x 3)]
:when (even? y)]
y)
(0 6 12)
Meine Frage ist:Warum gehört Clojure?let
undfor
beide Monaden?