Home > Archives > 24 October 2019

24 October 2019

runState が……

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 でいいじゃんとか思わなくもないけれど).

Home > Archives > 24 October 2019

Search
Feeds

Page Top