[Haskell-beginners] Random Generator

Shishir Srivastava shishir.srivastava at gmail.com
Wed Apr 1 15:08:42 UTC 2015


Hi,

I am trying to use the output value from the random function to generate
the random generator for the next value in list.

Below is the code -

----
import System.Random
myrandoms :: (RandomGen g, Random a) => g -> [a]
myrandoms gen = let (value, newGen) = random gen in value:myrandoms
(mkStdGen (value::Int))
----

however the compilation fails when the module is loaded -

[1 of 1] Compiling Main             ( myrandoms.hs, interpreted )

myrandoms.hs:3:80:
    Could not deduce (a ~ Int)
    from the context (RandomGen g, Random a)
      bound by the type signature for
                 myrandoms :: (RandomGen g, Random a) => g -> [a]
      at myrandoms.hs:2:14-48
      `a' is a rigid type variable bound by
          the type signature for
            myrandoms :: (RandomGen g, Random a) => g -> [a]
          at myrandoms.hs:2:14
    Relevant bindings include
      value :: a (bound at myrandoms.hs:3:22)
      myrandoms :: g -> [a] (bound at myrandoms.hs:3:1)
    In the first argument of `mkStdGen', namely `(value :: Int)'
    In the first argument of `myrandoms', namely
      `(mkStdGen (value :: Int))'

----------

Even though I am converting my 'value' parameter to Int in my new
generator, I am unable to see the error behind this.

Please can someone explain or even better provide a fix.

Thanks,
Shishir
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150401/8c08eba7/attachment.html>


More information about the Beginners mailing list