> You skipped past puzzle #1 and answered #2!
I was suspecting that !! My _fault_ was not to arrive to page 27 and _feeling_ the right type for `l` ;-)
> Consider `flip (>>=) :: Monad m => (a -> m b) -> m a -> m b` ...
Yes, yesterday I also thought about flipping `>>=` parameters but I got distracted by monads and comonads :-D.
And yes, I think this works because then, if we interpret the type of `=<<` in the "preorder language", we get:
p \le g(f(p\prime)) => g(f(p)) \le g(f(p\prime))
And this can be proved by:
From \\(p \le g(f(p\prime)) \\); by monotonicity of both \\(f\\) and \\(g\\) we have \\( g(f(p)) \le g(f(g(f(p\prime)))) \\); and then the isomorphism \\( g(f(g(f(p\prime)))) \cong g(f(p\prime)) \\) gives us \\( g(f(p)) \le g(f(p\prime)) \\).