Implicit monads: more tests with type classes and a generic compose function