少し前に巷ではやったSTのことを勉強してみました。原典のLazy Functional State Threadsをかじってみました。 僕はStateモナドはなんとなく自分でかけるくらいまで理解していたのですが、STは使ったこともないし、いったい何物なんだかぜんぜん知りませんでした。 Stateモナドは要するに関数なわけで State s a = State \s -> (a, s) ということはStateモナド系のKleisli関数がバインドされる図は乱暴な見方をすればこうゆう絵柄になるわけです。 runState (\s -> (a, s') >>= \a s -> (b, s') >>= \b s -> (c, s')) 何をスケッチしてるんだかよくわからなくなっちゃうんですがここではそれぞれのKleisli関数をそのシグネチャだけで書いています。それぞれのKleisli関数は(Kl