packages feed

lhc-0.6.20081127: src/Util/ArbitraryInstances.hs

module Util.ArbitraryInstances() where

import Test.QuickCheck
import Monad
import Char(chr)

--instance Arbitrary a => Arbitrary (Maybe a) where
--    arbitrary = do
--        i <- choose ((0::Int),7)
--        if i == 0 then return Nothing else do
--            x <- arbitrary
--            return (Just x)
    --coarbitrary Nothing = variant 0 . coarbitrary
--instance (Arbitrary a, Arbitrary b) => Arbitrary (Either a b) where
--    arbitrary = do
--        i <- choose ((0::Int),1)
--        case i of
--            0 -> liftM Left arbitrary
--            1 -> liftM Right arbitrary
--
instance Arbitrary Char where
    arbitrary = g where
        g = do
            c <- choose (0x20, 0xFF)
            if c > 0x7E && c < 0xA0 then g else return (chr c)