Sven Barth wrote 5 lines
Well... in C a test for equality is always "==". So, when reading it
(and not having read a Pascal code some minutes before :P ) one should
recognize without problems whether it's an assignment or a comparison
expression (it's another story that many people - including me - don't
recognize it that easily ^^)
As in the classic patch
+ if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
+ retval = -EINVAL;
which somebody tried to slip into the Linux kernel.
I think though that you only need distinct tokens (i.e. == vs = in the case of C) if the language includes multiple assignments. Or possibly I should say indeterminate assignments, lest there are cases where being able to discard a function's return value introduces ambiguity.
So some variant of OP's suggestion such as (a, b):= 0 does have
something going for it, at least when compared with a:= b:= 0. In fact-
although I don't know whether this is parseable- (a, b):= X with
implicit duplication as compared with (a, b):= (X, Y) where both sides
have to match, since <wild_speculation> this is beginning to look like
something that could be parallelised </>.
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]