「ビュー」データ構造と関連する演算子などControl.Monad.Free
を非表示にするのはなぜですか?purescript-free
FreeView
toView
Free モナドの通常の定式化では -
data Free f a = Pure a | Free (f (Free f a))
そして、次のような Functor が与えられた -
data TeletypeF a = PutStrLn String a | GetLine (String -> a)
チェーン化された PutStrLn 呼び出しを次のように折りたたむ単純な (醜い) コードをいくつか書くことができます -
collapseChained :: Free TeletypeF a -> Free TeletypeF a
collapseChained (Free (PutStrLn s1 (Free (PutStrLn s2 c)))) = Free PutStrLn (s1 ++ s2) c
collapseChained f = f
実際のデータ コンストラクターを使用せずに、collapseChained
Purescript の によってエクスポートされた関数を使用することと同等のことは可能ですか?Control.Monad.Free