data Hefty h a = Pure a | forall x . h (Hefty h) x :>>= (x -> Hefty h a)
というデータ型が肝なんだろうな。これにOpenUnionをくっつければ基本的なところはできるんじゃないかな。
あとは安全性のために「できる操作」を型で制限してやる感じかな。
data Hefty h a = Pure a | forall x . h (Hefty h) x :>>= (x -> Hefty h a)
というデータ型が肝なんだろうな。これにOpenUnionをくっつければ基本的なところはできるんじゃないかな。
あとは安全性のために「できる操作」を型で制限してやる感じかな。