I'm reading the Monads chapter in Real World Haskell (chapter 14). A function is defined as follows:
type RandomState a = State StdGen a
getRandom :: Random a => RandomState a
getRandom =
get >>= \gen ->
let (val, gen')= random gen in
put gen' >>
return val
I don't really understand the purpose of the get and put functions here. I rewrote the function as following which seems to do the same thing and is more concise:
getRandom2 :: Random a => RandomState a
getRandom2= State $ \ s -> random s
So my question is: What is the purpose of get and put in general?