On Thu, Apr 26, 2018 at 07:16:28PM +1200, Greg Ewing wrote:
Tim Peters wrote:
As a statement in a program (as opposed to typed at a shell), "a := 3" has the unnecessary (in that context) property of returning (and discarding 3), so it's better style to use "a = 3" in that context.
That seems like a post-hoc justification. If := were the one and only assignment symbol, the compiler could easily optimise away the extra DUP_TOP or whatever is involved.
Its still bad form to rely on compiler-dependent optimizations which aren't part of the language specification.
And to steal an earlier idea from Tim, it is especially unfortunate if you copy
data := sorted(huge_list_with_billions_of_items)
from a program and paste it into your REPL, then can't type again for an hour or two.
The longer I think about this, the more I am convinced that having two forms of assignment, one a statement with no return value and the other an expression with a return value, is a feature, not a wart or bug. Yes, it does add some complexity to the language, but it is useful complexity. If all complexity was bad, we'd still be programming by flicking toggle switches.