In particular, I'm thinking about
instance MonadFix m => Monad (Backwards m) where
m >>= f = Backwards $
do
fin <- forwards (f int)
int <- forwards m
return fin
It looks to me like this should be valid, and compatible with the Applicative instance, but maybe I'm missing something.