Let's consider, for now, that we are using the do-notation to order linear constraints (that is, to unpack the a .<= b data type).
We need a definition of (>>=) (and possibly of (<*>) for ApplicativeDo) which will make the do-notation desugaring do what we want.