Chris Angelico writes:
What I mean is that pedantically correct language inevitably ends up way too verbose to be useful in an educational context.
Nonsense. If you leave out the part in brackets and the "FUD", it's *much* shorter than what Steve wrote, and more accurate. What would require much more verbiage is a proper explanation of the behavior of mutable objects and how to figure out when you want early binding and when you want late binding. But none of us even tried to do that, so you can't hang that on me.
That said, it might be better in this case to recommend late-binding by default. But most importantly, either recommended default is better than making things sound scary.
So is no recommended default. Why not just tell the student the fact that early binding is faster?
If the deferred is implemented as a closure, it would be useless for this proposal.
I don't believe that, because this is exactly how Common Lisp handles late-bound default expressions, by creating a closure. In fact there's no dedicated syntax for early-bound defaults at all; you just quote them, and the quote expression gets evaluated. (The compiler is allowed, but not required, to optimize the evaluation away if it can prove that this does not ever affect the value of the argument.)