Я только что набрал в примере RandomState из реального мира haskell. Это выглядит так:
import System.Random
import Control.Monad.State
type RandomState a = State StdGen a
getRandom :: Random a => RandomState a
getRandom =
get >>= \gen ->
let (val, gen') = random gen in
put gen' >>
return val
getTwoRandoms :: Random a => RandomState (a, a)
getTwoRandoms = liftM2 (,) getRandom getRandom
Работает, но результат не отображается. Я получаю сообщение об ошибке:
No instance for (Show (RandomState (Int, Int)))
arising from a use of `print' at <interactive>:1:0-38
Possible fix:
add an instance declaration for (Show (RandomState (Int, Int)))
In a stmt of a 'do' expression: print it
У меня возникли проблемы с добавлением экземпляра для Show RandomState. Может кто-нибудь показать мне, как это делается?
Спасибо.