我正在阅读 Real World Haskell 中的 Monads 章节(第 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 一般的目的是什么?