> instance Monad Dot whereI tried to rewrite this using "where" and was bitten badly, because
> return a = Dot $ \ uq -> ([],uq,a)
> m >>= k = Dot $ \ uq -> case unDot m uq of
> (g1,uq',r) -> case unDot (k r) uq' of
> (g2,uq2,r2) -> (g1 ++ g2,uq2,r2)
inside the "where" uq would not be defined.