これは :ideograph_advantage: 情報かも https://qiita.com/debug-ito/items/34f6fb1403ab40ac7668
random (>=1 && <1.2) ですねdata Tree a = Leaf | Node a (Tree a) (Tree a)
extract :: Tree a -> a extract Leaf = ???
a を Monoid にするとか、 (a, Tree a) で NonEmpty っぽくするとコモナドになったりするでしょうか。できたとして、これで嬉しいかはわかりませんが…instance Comonad Tree なので a に関する性質は実装に使えないのですよね(実装途中にやろうとして気付いたこれは的を得ていると思います(a, Tree a)でNonEmptyっぽくするとコモナドになったり