[Haskell-beginners] defining own arbitrary :: Gen Int

Thomas Davie tom.davie at gmail.com
Sat Mar 7 08:26:35 EST 2009


On 7 Mar 2009, at 13:54, ben wrote:

> Hello,
>
> I would like to define my own arbitrary which should only give  
> naturals,
> i. e. which should behave like
>
> instance Arbitrary Integer where
>        arbitrary = elements ([0..]).
>
> This definition gives a "multiple definition" error. Is there a way to
> hide the definition of arbitrary::Gen Int of QuickCheck, such that I  
> can
> use my own definition ?

The easiest way is to newtype it, and use fromIntegral to convert:

newtype Natural = N Integer

instance Arbitrary Integer where
   arbitrary = N <$> elements [0..]

instance Integral Natural where
   fromIntegral (N x) = fromIntegral x

Bob


More information about the Beginners mailing list