Write Yourself a Scheme in 48 Hoursを読んでいる。6,7章の状態をどうもたせるかのあたり。
6章のIOはSystem.IOにすれば動く
Data.IORefを使うのは初めてなんだけど、第20回 更新を高速化するためのSTモナドを読んだら、なんとなく方向性はわかった気がする。
要するにモナドにくるんで内部ではやりたい放題だけど、外からは素直に見えるようにするってことでしょ?
そういえば数学ガールのガロア理論で出てきた「閉じている」っていうのとモナドのfunctorのT: X -> Xってのは関係あるのかね?