쿼리에서 시퀀스 모나드 주위에 머리를 감싸려고합니다. 클로저에있는 시퀀스 모나드 쿼리
(use 'clojure.algo.monads)
(def sequence-monad-decider
(fn [step-value monadic-continuation]
(mapcat monadic-continuation step-value)))
(def sequence-monad-monadifier list)
(def sequence-monad
(monad [m-result sequence-monad-monadifier
m-bind sequence-monad-decider]))
(prn
(with-monad sequence-monad
(domonad [a [1 2]
b [10, 100]
c [-1 1]]
(* a b c))))
그래서 I은 m-바인드 스텝 값
sequence-monad-decider
로 연속 전달하는 데 사용된다는 것을 이해한다
난 clojure.algo.monads을 사용하는 시퀀스 모나드를 생성 코드를 갖는다.
sequence.monad-decider
이 다음과 같이 정의된다 : 위의 a
제본
(prn
(with-monad sequence-monad
(domonad [a [1 2]
b [10, 100]
c [-1 1]]
(* a b c))))
, [1 2]
가 sequence.monad.decider
의 단계 값으로 전달된다 : 우리는 모나드 호출 보면
(def sequence-monad-decider
(fn [step-value monadic-continuation]
(mapcat monadic-continuation step-value)))
을 이 함수의 두 번째 인수로 전달되는 monadic-continuation
함수는 무엇입니까? sequence-monad-decider
및 sequence-monad-monadifier
에 대한