AP
Сама возможность реализации do-синтаксиса зависит от того, что закон для
>>=
выполняется.Потому что без выполнения этого закона
doи
x <- a >>= b -- (или вынос в функцию, или let)
c x
do
x <- a
x' <- b x
c x'
дадут разные результаты. Я бы не рисковал, имея шанс такое получить