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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage