Freeモナド
型がネストしても同じ型として使える?
code:memo.hs
data Free f a = Free (f (Free f a)) | Pure a
fはFunctor
code:memo.hs
data FreeT f a = FreeC (f (FreeT f a)) | Pure a
HaskellのFreeモナドのパッケージ
実際のFreeモナドの定義
code:haskell
data Free f a = Pure a | Free (f (Free f a))
deriving (Generic, Generic1)
Freeモナドを使っているフレームワーク
PureScriptのJelly
関連
参考
メモ