pi package:hedgehog

Test that a pair of encode / decode functions are compatible. Given a printer from some type a -> b, and a parser with a potential failure case b -> f a. Ensure that a valid a round trips through the "print" and "parse" to yield the same a. For example, types should have tripping Read and Show instances:
trippingShowRead :: (Show a, Read a, Eq a, MonadTest m) => a -> m ()
trippingShowRead a = tripping a show readEither
Drops invalid actions from the sequence.