monad is:exact
monad :: forall m a b c . (Monad m, Show a, Arbitrary a, CoArbitrary a, CoArbitrary b, Arbitrary (m a), EqProp (m a), Show (m a), Arbitrary (m b), EqProp (m b), Arbitrary (m c), EqProp (m c), Show (m (a -> b)), Arbitrary (m (a -> b))) => m (a, b, c) -> TestBatch Properties to check that the
Monad m satisfies the
monad properties
The program we need to crack. Note that different users get different
programs on the Advent-Of-Code site, so this is simply one example.
You can simply cut-and-paste your version instead. (Don't forget the
pragma NegativeLiterals to GHC so add x -1 parses
correctly as add x (-1).)