MonadFix
https://github.com/shiatsumat/wiwinwlh-jp/wiki/高度なモナド#monadfix
https://qiita.com/eielh/items/3b793dbedcc6c9dc125c
RecursiveDo
https://qiita.com/eielh/items/3b793dbedcc6c9dc125c
HaskellのfixのMonad版
mdo
http://www.kotha.net/ghcguide_ja/7.6.2/syntax-extns.html
https://elvishjerricco.github.io/2017/08/22/monadfix-is-time-travel.html