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?

Original source