jack: (Default)
[personal profile] jack
So, in some programming languages I can say:

x=y=0

To mean "Set y equal to nought and x equal to that[1]". In others, you'd get "Set x equal to one if y is already zero, else zero."

But in what language can I say:

if (x===y==0)

to mean "if x and y are both zero"?

The obvious problem is common operator associativity doesn't work. If the operators are nested binary operators, "y==0" would have to return two values, both the result, and "0".

You could have a system whereby you *did* return a number of things, eg. the result in list[0] and the various operators or other hints in list[1..n], and then let logic decide how to use the hints. That might also be useful where a function really really wants to return two values.

But is there a consistent way of doing this without turning it into an unreadable mess? :)

[1] Non-pedant corner: non-pedants might say "set x and y equal to nought"