Почему Clojure 'let` и `for` обе монады?
В этом обсуждении Брайан Марик делает вывод, чтоlet
а такжеfor
монады в Clojure:
Тем не менее,действительно монады общего назначения, как правило, пишутся на языке как специальные формы. Clojure-хlet
а такжеfor
Обе монады, но вам не нужно знать, что их использовать.
Этоlet
user=> (let [c (+ 1 2)
[d e] [5 6]]
(-> (+ d e) (- c)))
8
Этоfor
user=> (for [x [0 1 2 3 4 5]
:let [y (* x 3)]
:when (even? y)]
y)
(0 6 12)
Мой вопрос:Почему Clojurelet
а такжеfor
обе монады?