为什么在大多数“主流”语言中不支持区间比较(例如:x< variable< y)?

时间:2012-07-13 10:04:10

标签: logic theory

这可能是一个非常简单的问题,或者之前可能已经被问过,但是我在这里通过谷歌进行了简短的搜索之后无法找到答案。

所以冒着错过与此类似的东西的风险,这就是我的问题。为什么检查区间的条件语句通常不受支持,而是实现为块if或使用&&运算符将两个独立的条件绑定在一起?

承认,如果我必须编写两行更多的代码,并不是整个世界,但是从数学背景来看,我发现现代编译器无法在这个相对简单的语句中执行他们的巫术是非常奇怪的。

从技术或理论角度来看,它有特殊原因吗?

2 个答案:

答案 0 :(得分:1)

我的两分钱:如果你用多种语言写a < b < c就意味着(考虑到比较运算符通常是左关联的)((a < b) < c)。但是a < b返回一个布尔值,所以(例如,如果a < b返回true),连续的减少是(true < c),除了极端罕见的情况之外,它不是你想要的要做。

答案 1 :(得分:1)

我认为从技术角度来看没有障碍,因为有些语言确实支持这种比较:

  • Python(docs
  • Clojure(docs) - 以及几乎所有其他lispy语言
  • Perl 6(docs

Mathematica,如果我没记错的话。

可以肯定的是,它使语言的解析变得更加复杂,语言设计者如果不将其视为非常频繁使用的功能,可能会或可能不会支付该价格。

PS。我个人喜欢它,但发现自己很少在Python中使用它。