<div dir="ltr">I’ve wanted this before as well. Maybe we should throw a newtype at it?<div><br></div><div>newtype LeftBiased a = LeftBiased [a]</div><div>instance Alternative (LeftBiased a) where</div><div>  empty = []</div><div>  [] <|> b = b</div><div>  a <|> _ = a</div><div><br></div><div><div>newtype RightBiased a = RightBiased [a]</div><div>instance Alternative (RightBiased a) where</div><div>  empty = []</div><div>  a <|> [] = a</div><div>  _ <|> b = b</div></div><div><br></div><div>This could be generalised to work on any Foldable, actually, if that’s desirable. And of course the bikeshed could be a different colour as for the names.</div><div><br></div><div>It’s unfortunate that the instance for Maybe is already biased differently; I wonder if this instance would be useful, or if it’s already available somewhere?</div><div><br></div><div>newtype Unbiased a = Unbiased (Maybe a)</div><div>instance (Monoid m) => Alternative (Unbiased m) where</div><div>  empty = Nothing</div><div>  Just a <|> Just b = Just (a <> b)</div><div>  _ <|> Just b = Just b</div><div>  Just a <|> _ = Just a</div><div>  _ <|> _ = Nothing</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 5, 2017 at 11:12 PM, Theodore Lief Gannon <span dir="ltr"><<a href="mailto:tanuki@gmail.com" target="_blank">tanuki@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Fiddling around, I found myself wanting:<div><br></div><div><font face="monospace, monospace">coalesce :: [a] -> [a] -> [a]</font></div><div><font face="monospace, monospace">-- or -- :: (Foldable t) => t a -> t a -> t a</font></div><div><font face="monospace, monospace">coalesce a b = if null a then b else a</font></div><div><br></div><div>I expected this to be <font face="monospace, monospace">(<|>)</font><font face="arial, helvetica, sans-serif"> (it is for </font><font face="monospace, monospace">Maybe</font><font face="arial, helvetica, sans-serif">!) </font>but instead I find no canonical implementation of it anywhere, and what seems like a useless <font face="monospace, monospace">instance Alternative []</font>. What's the rationale?</div></div>
<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></blockquote></div><br></div>