Eric V. Smith writes:
That's why I think we should have a larger concept that just late-bound parameters: I think there's a general concept here that can be extended beyond parameters.
One advantage of Chris's preferred syntax is that as a default in a function's parameter list it could do whatever it needs to do there, while in an executable context, it could return the object, as := does. That's a bit inconsistent and quite ugly, I guess, and it might lead to code like def foo(x=>[]): a = bar() return x foo(x=>[a]) which I think would be rather confusing. Whether it would be acceptable is a question of how often it would be used as an assignment expression rather than as an assignment statement. I think I've just convinced myself this is a non-starter, but I'll leave it in as documentation that defining the syntax is a nontrivial issue.
later, we'd have two ways to specify late-bound parameters [0].
We might want that anyway. One of the aspects of Chris's proposal is that late-bound parameters get resolved to objects in a well-specified (if complicated) order at call time, before entering the function body. In foo(x=othermodule.bar()) the compiler cannot know that x's value is a "deferred object" (aside: how about "autoevaluated expression object", presumably with an abbreviated form such as "autoeval" for normal use). I don't see how we can guarantee order of evaluation without syntax for late binding of parameters. I think the predictability is a potentially valuable aspect of Chris's proposal that might justify special syntax for late-bound defaults of formal arguments.[1]
[0]: Or arguments, I can never remember which is which: someone needs to invent a memorable mnemonic device.
C: argv and argc refer to the actual arguments, not the parameter list. I just use "formal" vs. "actual" to modify "argument". Footnotes: [1] I write "potential" not to deprecate it but because I have no particular use case for late-bound defaults that demands them, rather than the sentinel idiom. So I have no sense whether this predictability is a big deal.