Language support for chained comparison operators (x < y < z)
operators, programming-languages, syntax
Solution
It should be more common, but I suspect it is not because it makes parsing languages more complex.
Benefits:
- Upholds the principle of least surprise
- Reads like math is taught
- Reduces cognitive load (see previous 2 points)
Drawbacks:
- Grammar is more complex for the language
- Special case syntactic sugar
As to why not, my guesses are:
- Language author(s) didn't think of it
- Is on the 'nice to have' list
- Was decided that it wasn't useful enough to justify implementing
Problem
A question was posted about chained comparison operators and how they are interpreted in different languages. Chaining comparison operators means that `(x < y < z)` would be interpreted as `((x < y) && (y < z))` instead of as `((x < y) < z)`. The comments on that question show that Python, Perl 6, and Mathematica support chaining comparison operators, but what other languages support this feature and why is it not more common? A quick look at the Python documentation shows that this feature has been since at least 1996. Is there a reason more languages have not added this syntax? A statically typed language would have problems with type conversion, but are there other reasons this is not more common?