бесплатный MonadPlus, определенный как
data Free f a = Pure a | Free (f (Free f a)) | Plus [Free f a]
был удален в свободном 4.6 со следующим замечанием (changelog):
Удалено
Control.MonadPlus.Free
. Вместо этого используйтеFreeT f []
, и результат будет законопослушным.
В чем была проблема, в частности, какие законы не выполнялись?