[Haskell-cafe] [random-fu] sampleRVar with StdGen in RWS?
sivanov at colimite.fr
Fri Aug 3 12:54:03 UTC 2018
MonadRandom from Control.Monad.Random does indeed have an RWST instance,
but I'd like to stick with random-fu because of the long list of
provided distributions, and the two seem incompatible :
I did try to force a very monoidal write-state:
testRWS :: StdGen -> Int
testRWS = fst . evalRWS work ()
work = do
sampleRVar $ uniform 1 10
• No instance for (MonadRandom (RWST () String StdGen Identity)) arising from a use of ‘work’
• In the first argument of ‘evalRWS’, namely ‘work’
In the second argument of ‘(.)’, namely ‘evalRWS work ()’
In the expression: fst . evalRWS work ()
which seems to be saying the same thing as before :-(
Thus quoth Vanessa McHale on Fri Aug 03 2018 at 14:43 (+0200):
> 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
> On 08/03/2018 07:31 AM, Sergiu Ivanov wrote:
>> 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
>> 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 .
>> Is there a reason to not have a MonadRandom instance for RWST?
>> Am I looking in the wrong place?
>>  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:
>> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 487 bytes
Desc: not available
More information about the Haskell-Cafe