[Haskell-cafe] Hspec + QuickCheck passing type

Martijn Rijkeboer haskell at bunix.org
Mon Mar 28 17:53:32 UTC 2016


I'm writing the following Hspec + QuickCheck test for some type:

  context "Type1" $
    it "decode inverses encode" $ property $
      \x -> (decode . encode) x == Right (x::Type1)

However, I have a number of these types, and I could write the same test
for every type, but that isn't very DRY. Therefore I would like to put the
test in a function and call that function for every type. Something like
the following:

  typeTest name = do
    context name $
      it "decode inverses encode" $ property $
        \x -> (decode . encode) x == Right x

Unfortunately this doesn't work, since QuickCheck doesn't know which
Arbitrary instance to use. How can I pass the type, e.g. x::Type1, to
this function so QuickCheck knows what Arbitrary instance to use?

Kind regards,

Martijn Rijkeboer

More information about the Haskell-Cafe mailing list