This compiles:
instance (Typeable a, Arbitrary a, Typeable b, Arbitrary b,
Convertible a b) => Arbitrary (Attr a b) where
arbitrary = makeAttr `fmap` arbitrary
coarbitrary a = error "Not implemented"
arbitraryProp :: forall a b.(Eq a, Packet b, Show a, Convertible a b,
Arbitrary a, Arbitrary b) => Gen (Attr a b) -> Gen Prop
arbitraryProp attr = liftM2 (:=) attr arbitrary
Joel
On Oct 28, 2005, at 12:13 AM, Joel Reymont wrote:
Just one more question...
data Prop = forall a b. (Eq a, Eq b, Show a, Packet b, Convertible
a b)
=> Attr a b := a
deriving (Typeable)
data Attr a b = Attr String
(a -> Dynamic, Dynamic -> Maybe a)
(a -> b, b -> a)
makeAttr :: (Typeable a, Convertible a b) => String -> Attr a b
makeAttr name = Attr name
(toDyn, fromDynamic)
(convert_AB, convert_BA)
I can do this for Attr
instance (Typeable a, Arbitrary a, Typeable b, Arbitrary b,
Convertible a b) => Arbitrary (Attr a b) where
arbitrary = makeAttr `fmap` arbitrary
coarbitrary a = error "Not implemented"
How do I define an arbitrary prop, though? Following does not work:
arbitraryProp :: forall a b.(Arbitrary a, Arbitrary b) => Attr a b -
> Gen Prop
arbitraryProp = arbitrary := arbitrary
--
http://wagerlabs.com/
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe