<div dir="auto"><div>I didn't say no use case exists, but rather "too special case." And/or shortcutting is great, but truthiness feels much more general than noneness to me.</div><div dir="auto"><br></div><div dir="auto">But yes, 'first_non_none()" might have to address laziness in some manner, depending on the use case. Zero argument lambdas and expression quoting are the usual hacks (yes, both ugly in their own ways).<br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On Nov 29, 2017 12:14 AM, "Nick Coghlan" <<a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text">On 29 November 2017 at 16:13, David Mertz <<a href="mailto:mertz@gnosis.cx">mertz@gnosis.cx</a>> wrote:<br>
> Strong -1 still from me. Too special case for syntax. Just write a function<br>
> 'first_non_none()' that can perfectly will handle the need.<br>
<br>
</div>That's the equivalent of SQL's COALESCE, and it's insufficient for the<br>
same reason "and" and "or" are syntax rather than builtins: the<br>
function form doesn't provide short-circuiting behaviour.<br>
<br>
As far as utility goes, I put it in a similar category to matrix<br>
multiplication: if you don't need it, you don't need it, but when you<br>
do need it, you need it a *lot*.<br>
<br>
The use case where these operations come up is when you're working<br>
with partially structured hierarchical data (*cough*JSON*cough*). In<br>
those kinds of structures, None is frequently used as a marker to say<br>
"this entire subtree is missing", and you either want to propagate<br>
that None, or else replace it with something else (and the "something<br>
else" may be a network call to a different service, so you definitely<br>
don't want to do it if you don't need to).<br>
<br>
So I'd remind folks to try to avoid the "I don't need this, so nobody<br>
needs this" mistake. It's OK to say "the use case exists, but I still<br>
don't want that particular syntax for it in Python" (I'm personally<br>
inclined to agree with you on that front). It's not OK to try to claim<br>
there are no use cases where the status quo is awkward enough to<br>
become irritating (since it's an empirically false statement that you<br>
don't need to be making).<br>
<br>
Cheers,<br>
Nick.<br>
<div class="elided-text"><br>
--<br>
Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>   |   Brisbane, Australia<br>
</div></blockquote></div><br></div></div></div>