
On Wed, Sep 30, 2015 at 09:41:53AM -0700, Jeff Hardy wrote:
'def' is currently short for 'define', which would be too confusing. Spelling out 'default' isn't so bad, though:
self.x = x default []
Heh, people jest :-) Oh, you're serious? That just goes to show how different we all are. I think that using "default" as an infix operator is hideous. "default" as a function/verb? Sure, that works fine: if len(missed_payments) > 5: loan.default() "default" as a variable/noun? Absolutely fine: default = "something or other" But "x default z" just doesn't read well: in English, it sounds like you are ordering x to cause z to default. Not very many words read naturally as a binary infix operator. Besides, I would expect that making "default" a keyword will break a *huge* number of programs. I'm sure that many, many people use it as a variable or parameter name.
And if it's going to be that long anyway, we might as well just put a `default` function in the builtins:
self.x = default(x, [])
That's useless, as it breaks the short-circuiting property, which is one of the critical motives for introducing the null coalescing operator. Without the short-circuiting property, there's no point in making it a built-in. If all you want is a default function, then just add it as a helper function to the top of your code: def default(obj, alternative): if obj is None: return alternative return obj
I actually really like 'otherwise', but it's certainly not brief:
self.x = x if x is not None else [] self.x = x otherwise []
That's almost half the length of the alternative. And if you have something more realistic, you save proportionally even less: document if document is not None else Document() document otherwise Document() But personally, I have absolutely zero interest in the null coalescing operator on its own. I don't object to it specifically, but what really interests me are the two (pseudo)operators, null-aware indexing and null-aware attribute lookup. How do you extend "otherwise" to work with the [] and . operators? -- Steve