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