2019年10月24日
runState が……
- 2019-10-24 (Thu)
- 一般
State モナドの runState の返すペアってどっちが値でどっちが状態だっけ? とか思って Hoogle に聞いてみたら,一番上に出てきたのが runState :: State s a -> s -> (s, a) だった.
なるほど,snd で値が取れるのか → 大量のエラーを食らう.そしてしばらくエラーと戦い迷走.
結論:Control.Monad.State のやつは runState :: State s a -> s -> (a, s) でペアが逆だった.Hoogle だと2番目に出てくる.はた迷惑な.よく見ろよとも言う.
歴史的事情なのだろうけど,同じ名前で同じ目的なんだから同じ型にしておいて欲しい.無駄に時間を食った(runState くらい覚えとけとか,そもそも evalState でいいじゃんとか思わなくもないけれど).
- Comments: 0
- TrackBack (Close): -