我需要编写一个'序列,也许m'(monad结合序列monad的行为与可能monad)的帮助。写一个序列 - 也许monad使用clojure.algo.monads
该规则应当是:
- 如果任何输入是零,那么整个表达失败。
- 否则,就像序列单子会做的那样评估身体。
(domonad sequence-maybe-m [a [1 2 3] b [1 2 3]] (+ a b)) ;; => (2 3 4 3 4 5 4 5 6) (domonad sequence-maybe-m [a [1 2 3] b nil] (+ a b)) ;; => nil (domonad sequence-maybe-m [a [1 2 3] b (range a)] (+ a b)) ;; => (1 2 3 3 4 5) same as 'for' (domonad sequence-maybe-m [a [1 2 3] b [1 nil 3]] (+ a b)) ;; => nil
这将是一个奖金,如果它与clojure.algo.monads库兼容:
(defmonad sequence-maybe-m
[m-result <...>
m-bind <...>
m-zero <...>
m-plus <...>
])
其中< ...>的功能。
辉煌。谢谢! – zcaudate