【发布时间】:2011-02-04 05:07:06
【问题描述】:
我正在阅读 Real World Haskell(第 14 章)中的 Monads 章节。 一个函数是defined,如下:
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 一般的目的是什么?
【问题讨论】:
-
只是在这种情况下,还是
get和put的一般用途?在后一种情况下,它们的使用更容易解释…… -
一般;我将编辑我的问题。