コンテキストとルールからdo記法マクロを作るマクロ
MonadState も Monad であるから、 get 関数や put 関数を使わない限りは do-monad でも実行できる。
indent fix