[Haskell-cafe] Re: QuickCheck: Arbitrary for a complex type

Joel Reymont joelr1 at gmail.com
Wed Apr 4 11:47:22 EDT 2007

I got this simple example working so I think I have my question  

Now I just have to learn to write generators of my own to produce  
valid and invalid input for my parser.

module Foo where

import Control.Monad
import System.Random
import Test.QuickCheck

data Foo
     = Foo Int
     | Bar
     | Baz
       deriving Show

instance Arbitrary Foo where
     coarbitrary = undefined
     arbitrary   = oneof [ return Bar
                         , return Baz
                         , liftM Foo arbitrary

gen' rnd = generate 10000 rnd $ vector 5 :: [Foo]

gen =
     do { rnd <- newStdGen
        ; return $ gen' rnd


More information about the Haskell-Cafe mailing list