It seems like you need your write-state to be a monoid in order
to infer a `MonadRandom` instance. Based on your code, I'm
guessing the compiler can't infer that.
Have a look at
https://hackage.haskell.org/package/MonadRandom-0.5.1.1/docs/Control-Monad-Random-Class.html#t:MonadRandom
Dear Café, I would like to use random-fu to do some pseudo-random simulations for a given StdGen (so that I can run the same simulation multiple times, if needed). The following works: testState :: StdGen -> Int testState = evalState (sampleRVar $ uniform 1 10) The following doesn't: testRWS :: StdGen -> Int testRWS = fst . evalRWS (sampleRVar $ uniform 1 10) () I get <interactive>:2:26: error: • No instance for (MonadRandom (RWST () b0 StdGen Identity)) arising from a use of ‘sampleRVar’ • In the first argument of ‘evalRWS’, namely ‘(sampleRVar $ uniform 1 10)’ In the second argument of ‘(.)’, namely ‘evalRWS (sampleRVar $ uniform 1 10) ()’ In the expression: fst . evalRWS (sampleRVar $ uniform 1 10) () Indeed, I do see a MonadRandom instance for StateT, but none for RWST [0]. Is there a reason to not have a MonadRandom instance for RWST? Am I looking in the wrong place? - Sergiu [0] https://hackage.haskell.org/package/random-source-0.3.0.6/docs/Data-Random-Source.html
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.