
9 Oct
2011
9 Oct
'11
3:57 a.m.
On Sun, 9 Oct 2011, Heinrich Apfelmus wrote:
Hello,
I recently noticed that the instance
MonadFix m => ArrowLoop (Kleisli m)
does not fulfill the ArrowLoop laws for most monads, rendering it either useless or dangerous for the unwary. Removing it would be the correct thing to do, but I think that the sensible thing to do is to merely document said fact at the instance declaration in the haddocks. This way, the few monads that do support an ArrowLoop instance (most notably the lazy state monad) can keep their instance while everyone else is warned.
... and since the lazy state monad does not fulfill the Functor laws, there is no monad at all, where the ArrowLoop instance is correct?