
David Menendez writes:
oleg@pobox.com writes:
Called MonadMinus, it is capable of defining LogicT monad with the true logical negation as well as interleaving and committed choice. Our ICFP05 paper describes MonadMinus monad (actually, the transformer) and LogicT as well as their two implementations.
I just noticed that the Haskell wiki[1] claims that Data.Foldable generalizes MonadMinus (aka MonadSplit).
<snip>
But I can't help but feel that something is being lost.
Now that I think about it, you're losing the ability to work with monad
transformers.
That is, I don't think you can define a Foldable instance for
newtype NondetT m a
= NondetT (forall b. (a -> m b -> m b) -> m b -> m b)
--
David Menendez