Freeモナド
自由モナド(Free monad)
モナドのひとつ
型がネストしても同じ型として使える?
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: Monads for free
実際のFreeモナドの定義
code:haskell
-- @see https://hackage.haskell.org/package/free-5.2/docs/src/Control.Monad.Free.html#Free
data Free f a = Pure a | Free (f (Free f a))
deriving (Generic, Generic1)
Freeモナドを使っているフレームワーク
PureScriptのHalogen
PureScriptのJelly
yukikurage/purescript-jelly
関連
Haskell モナド
副作用
Operationalモナド
Coyoneda
Comonad
Kan拡張
Codensity
MonadTrans
参考
Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); }
Free モナドは何が嬉しいか | blog.ojisan.io
メモ
つくってわかるFreeモナド 〜 Freeモナド、その仕組み 〜
The Comonad.Reader » Free Monads for Less (Part 1 of 3): Codensity
Comonad
Kan拡張
Codensity
Control.Monad.Codensity
『Yield: Mainstream Delimited Continuations』
The Comonad.Reader » Free Monads for Less (Part 2 of 3): Yoneda
The Comonad.Reader » Free Monads for Less (Part 3 of 3): Yielding IO
Free Monad
Freeモナド - mrsekut-p
The Comonad.Reader » Monads for Free
free monadとはmonadそのものである - うさぎ小屋
#Haskell #Haskell_モナド