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