В этом обсуждении Брайан Марик указывает, что 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)
Мой вопрос: Почему Clojure let
и for
обе монады?