>>=って引数の順序逆じゃね?
FunctorもApplicativeも関数→データ→返り値なのに何でMonadだけデータ→関数→返り値なの?