On Fri, Jul 17, 2009 at 10:21 AM, Wolfgang Jeltsch<g9ks157k@acme.softbase.org> wrote:
Am Freitag, 10. Juli 2009 23:41 schrieben Sie:
Additionally, the second equality you provide is just wrong.
f *> empty = empty is no more true than f *> g = g,
I don’t understand this. The equation f *> g = g is much more general than f *> empty = empty. (<|>) usually denotes non-determinism and empty should be the neutral element of non-determinism, which is failing. This leads me to f *> empty = empty.
That's too strong, unless you want to restrict Alternative to applicative functors with reversible side-effects. It's generally accepted that LogicT IO is an instance of MonadPlus, but liftIO (putStrLn "effects!") >> mzero /= mzero I would expect LogicT IO to be an instance of Alternative as well. -- Dave Menendez <dave@zednenem.com> <http://www.eyrie.org/~zednenem/>