Free型
from
Freeモナド
定義
code:purs(hs)
data Free f a = Pure a
| Join (f (Free f a))
Free型はMonadをdata構造として表現したもの
である
データ型の定義自体には
f
にFunctorの制約はない
f :: * -> *
ではある
Join
の部分の値コンストラクタにも
Free
という名前を使うことが多いが、分かりづらい
mrsekut.icon
型コンストラクタと値コンストラクタの名前の重複によって再帰が見づらい
Monadとなる条件
とのアナロジーがわかりづらい
だから、
Pure
と
Join
という名前を使ったほうが親切だと思う
mrsekut.icon