monad も作ろう。
とりあえず State もなど。
State モナドできたーーーーー　まだバグバグしいけど、また今度なおす
こめんとあうと消し忘れた
コンテキストとルールからdo記法マクロを作るマクロ
MonadState も Monad であるから、 get 関数や put 関数を使わない限りは do-monad でも実行できる。
indent fix
ここ、 concat とかする必要なかった
indent fix
中置記法だから、べつにインデントとかする必要なさげ。
やっぱり、ここは可変長で渡すよりはリストを渡した方がいいな
Merge branch 'prelude' into monad
Merge branch 'prelude' into monad
Merge branch 'prelude' into monad
:in は primitive に持たせ、 <- と組み合わせて使用する。
優先順位の指定、間違っていた
今までのは (do-state (x <- state-get >> get >> get :in (put (dec x)) >> get)) とかされると動かなかったけど、もし構文木が (>> (>> (>> state-get get) get) get) みたいに再帰していたら掘るようにした
>> と同じ意味で結合だけが違う中置構文、 | に決定した。
Merge branch 'prelude' into monad
do-monad とか do-state も Control protocol で汎用化する。