フリーモナドを使用して、ANDにマップされた>>=とANDにマップされたのPrologのようなAND/OR決定木を構築するためのEDSLを作成しようとしています。私はA AND (B OR C) AND (D OR E)のようなものを記述できるようにしたいが、私はこれを(A AND B AND D) OR (A AND B AND E) OR (A AND C AND D) OR (A AND C
MonopはIOのためのHaskellをどのように使うのかを見ることができます。データフロー操作のための関数を作成する場合と同じように、Monadsを使って「計算をまとめて」使うことができます。 私が唯一grokkingしているのは、Monads for Control Flowを使用できることです。これで、コントロールフローがシーケンス、選択、反復について理解できるようになりました。今はmap、
なぜMonadTransが class MonadTrans t where
lift :: (Monad m, Monad (t m)) => m a -> t m a
-- ^^^^^^^^^^^
の代わりに、これは(Why aren't monad transformers constrained to yield monads?における提案とは異なり)のHaskel
私は簡単にそれを再作成することができ、単位数子/モナド data Unit a = Unit
を探していますが、私はむしろ、この基本的な何かを複製していないと思います。それは、カテゴリーエクストラパッケージ(http://hackage.haskell.org/packages/archive/category-extras/0.1/doc/html/Control-Functor.html)