Почему 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 обе монады?

Ответы на вопрос(3)

Ваш ответ на вопрос