Real World Haskellのモナドの章(第14章)を読んでいます。関数は次のように定義されます。
type RandomState a = State StdGen a
getRandom :: Random a => RandomState a
getRandom =
get >>= \gen ->
let (val, gen')= random gen in
put gen' >>
return val
ここでget関数とput関数の目的がよくわかりません。同じことをしているようで、より簡潔な関数を次のように書き直しました。
getRandom2 :: Random a => RandomState a
getRandom2= State $ \ s -> random s
だから私の質問は:一般的にgetとputの目的は何ですか?