Idetalモナド
Freeモナド
の一般化
https://xuwei-k.hatenablog.com/entry/20150209/1423443779
https://fumieval.hatenablog.com/entry/2013/01/07/113221
https://fumieval.hatenablog.com/entry/2013/01/04/110339
http://lotz84.github.io/haskell/free-monad.html