Excerpts from Jürgen Nicklisch-Franken's message of Wed Aug 25 23:32:51 -0400 
2010:
> instance Arbitrary QCExample where
>     arbitrary =
>         let i1 = arbitrary
>             i2 = fmap (* 2) i1
>         in liftM2 QCExample i1 i2

What's happening here is that you are "evaluating" the random value generator
too late in the game: when you set i1 = arbitrary, no random value has been
generated yet, and i2 is thus another generator which has no relation to
what i1 might produce.  You could instead do this:

    arbitrary = do
        i1 <- arbitrary
        let i2 = i1 * 2
        return (QCExample i1 i2)

Cheers,
Edward
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to