
On Mon, 16 Aug 2004 09:01:45 -0700 (PDT), Ron de Bruijn
I was playing with QuickCheck and I just wanted to put all of my tests in a list, but that's not possible, because of the fact that a list can only contain values of the same type.
So concrete I would like to write down this:
prop_RevRev xs = reverse (reverse xs) == xs where types = xs::[Int]
--trivial test prop_Simple = True == True
whatIwant::(Testable a)=>[a] whatIwant = [prop_RevRev, prop_Simple]
testAll::IO () testAll = do sequence_ $ map quickCheck whatIwant
I saw this page: http://www.haskell.org/hawiki/ExistentialTypes
but you still have to explicitly add the relation via Obj (and that's bad).
Well, if you write data Test = forall a. Testable a => Test a instance Testable Test where property (Test x) = property x you at least get the "unwrapping" for free, and can write things like mapM_ quickCheck [Test prop_revrev, Test prop_trivial, Test prop_something] Regards, Martin