Hi,
After a lot of thinking, I can't get what I
am doing wrong in this code:
(...)
data ( RandomGen g ) => RandomMonad g a = RandomMonad (g -> a)
RandomGen g is considered the constraint for the application of
RandomMonad constructor, but GHC does not conclude that every value of
(RandomMonad g a) fulfills this constraint. Actually, 'undefined' is
available for any 'g'.
you need to make (RandomGen g) a constraint of the instance:
instance RandomGen g => Monad (RandomMonad g) where
Nice. I wasn't so wrong as I though :)
I didn't understand why can't the compiler deduce
that g is always going to be of type RandomGen. Even
if I use 'undefined', it has to be a RandomGen undefined.
Btw. RandomMonad looks like Control.Monad.Reader.
You are right, I'll try that instead so I learn a little
bit more. But I can't understand this syntax:
class (Monad m) => MonadReader r m | m -> r where
What is the '|' doing there? I'll post that in a new thread
since it's a different question.
Thanks,
MaurĂcio
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe