<div dir="ltr">My understanding of the proposed instance was that if xs >>= f is [], then (xs >>= f) | (ys >>= f) would be ys >>= f.  That may not necessarily be empty.<div><br></div><div>Consider:</div><div><br></div><div>f 42 = [42]</div><div>f _ = []</div><div><br></div><div>xs = [1,2,3]</div><div>ys = [42]</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, May 28, 2017 at 12:24 AM, Damian Nadales <span dir="ltr"><<a href="mailto:damian.nadales@gmail.com" target="_blank">damian.nadales@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> It's hard to look at laws, because there's apparently little agreement on<br>
> the proper laws for Alternative.  It looks possible that as an Applicative<br>
> and Alternative, this would be fine; but the Alternative instance you<br>
> propose would work in odd ways with the Monad instance.  That is, if f x ==<br>
> [] for any x in (non-empty) xs, then something like (xs <|> ys) >>= f would<br>
> yield an empty list, while (xs >>= f) <|> (ys >>= f) would not.  But, this<br>
<br>
</span>In this case `(xs >>= f) <|> (ys >>= f)` will also be empty as far as<br>
I can see...<br>
<br>
I'm also trying to make some sense out of this definition of<br>
alternative for lists. For `Maybe` we also have a left biased<br>
alternative, and despite this I find it quite useful...<br>
<div class="HOEnZb"><div class="h5"><br>
> isn't a law or anything, you could chalk it up as counter-intuitive, but not<br>
> disqualifying.<br>
><br>
> On Fri, May 5, 2017 at 11:12 PM, Theodore Lief Gannon <<a href="mailto:tanuki@gmail.com">tanuki@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Fiddling around, I found myself wanting:<br>
>><br>
>> coalesce :: [a] -> [a] -> [a]<br>
>> -- or -- :: (Foldable t) => t a -> t a -> t a<br>
>> coalesce a b = if null a then b else a<br>
>><br>
>> I expected this to be (<|>) (it is for Maybe!) but instead I find no<br>
>> canonical implementation of it anywhere, and what seems like a useless<br>
>> instance Alternative []. What's the rationale?<br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Haskell-Cafe mailing list<br>
>> To (un)subscribe, modify options or view archives go to:<br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
>> Only members subscribed via the mailman list are allowed to post.<br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Haskell-Cafe mailing list<br>
> To (un)subscribe, modify options or view archives go to:<br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
> Only members subscribed via the mailman list are allowed to post.<br>
</div></div></blockquote></div><br></div>