Por que as duas mônadas de Clojure `let 'e` for`?
Nesta discussão Brian Marick afirma quelet
efor
são mônadas em Clojure:
Dito isto, orealmente mônadas de uso geral tendem a ser escritas no idioma como formas especiais. Clojure'slet
efor
são mônadas, mas você não precisa saber disso para usá-las.
Isto élet
user=> (let [c (+ 1 2)
[d e] [5 6]]
(-> (+ d e) (- c)))
8
Isto éfor
user=> (for [x [0 1 2 3 4 5]
:let [y (* x 3)]
:when (even? y)]
y)
(0 6 12)
Minha pergunta é:Por que os Clojure'slet
efor
ambas as mônadas?