Я читаю главу Monads в 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
Итак, мой вопрос: Какова цель получения и размещения в целом?