Hello all, sorry I must have taken my stupid pills this morning, I cannot get the following code to compile, what am I missing?
data MyState=MyState Integer
newState:: (RandomGen g) => RandT g IO MyState
newState = do
time<-liftIO getCPUTime
rand<-getRandomR (1,6)
return $ MyState (time+rand)
newStateIO :: IO MyState
newStateIO = do
r<-getStdGen
evalRandT newState r
-> Could not deduce (MonadIO (RandT g IO)) from the context (RandomGen g) arising from a use of `liftIO' at ...:4:15-31
Possible fix:
add (MonadIO (RandT g IO)) to the context of
the type signature for `newState'
or add an instance declaration for (MonadIO (RandT g IO)) Pirates.hs /Pirates/src line 167 Problem
But the MonadRandom docs say:
Instances:
And the MonadIO docs say:
Instances:
So it looks to me it should work!
I've also tried to replace IO by MonadIO m=> in the signature, or remove all signatures. No joy.
Thanks for any help.
--
JP Moresmau
http://jpmoresmau.blogspot.com/