I've been using the binary library, and would like to test whether my put and get functions are inverses. I thought of using QuickCheck but it is not clear how I can write the necessary property. I skimmed Claessen, Hughes, "Testing monadic code with QuickCheck", but their examples require a lot of extra work (e.g. their queue example requires an AST for a mini-queue language). Am I missing something obvious?

Also, what's the difference between QuickCheck 1 and 2? I'm on gch 6.10 and doing `cabal install QuickCheck` gives me version 1.2.0.0, which lacks constructs described in the above paper.

Thanks.