Yitzchak Gale wrote:
> Ben Franksen wrote:
>> ...and the Unimo paper[1] explains how to easily write a 'correct' ListT.
>> Are you sure? Maybe I am missing something, but I don't
> see any claim that the Unimo ListT satisfies the laws any
> more than the old mtl ListT.
> ListT-Done-Right could also be defined via the Unimo
> framework, and then it would satisfy the monad laws.
The list monad transformer implemented with Unimo (figure 13) is
different from ListT m a = m [a] (figure 11 for reference).
Note that I say "the list monad transformer".
I don't understand what's so special about "ListT m does not fulfill the
monad laws", it just shows that naïvely using m [a] to implement the
list monad transformer is incorrect for general m . In other words,
there is a big bug in Control.Monad.List and that's all there is to it.
Regards,
apfelmus