Nick Coghlan wrote:
I also think that if "=" and ":=" both target the same kind of scope, there isn't enough new expressiveness introduced by the latter to justify the syntactic complexity of adding it.
OK, but then how about introducing assignment expressions with the "=" operator but *requiring* extra parens (similar to how modern C compilers warn about assignment expressions without parens), e.g. while (obj = get()): process(obj) The semantics of assignment expressions could be exactly what I proposed for ":=", i.e. completely consistent with assignment statements. Assignment statements could be either left as they are or could be treated as expressions. That second choice would have consequences for interactive sessions:
a = 3 3
---------------- The above would bring the benefits of assignment expressions in a minimally invasive but safe way. Moreover, it would not feel like Pascal! The only downside is that "=" stands out less than ":=" so that the presence of side-effects would be somewhat less visible. Christoph