【发布时间】:2014-01-04 20:15:52
【问题描述】:
是否有一种编程语言可以让我们编写如下内容:
a => b
计算含义? (其中a 和b 是布尔值)
我能找到的最接近的是 Scala:
a <= b
但它看起来和“蕴涵”的实际含义完全不同。
【问题讨论】:
-
如果您对
a -> b的布尔表达式感兴趣,那么您可以使用它与(not a) or b等效的事实。所以在C中,a -> b的等价物是!a || b。 -
是的,我知道这个事实。但它不如箭头之类的东西好。
-
我所知道的程序语言没有明确的
a -> b,因为它作为“纯逻辑表达式”并不会真正增加很多价值。归根结底,如果程序员正在寻找那种类型的真值,那么他们的真正意思是(not a) or b,这更容易理解。当然,if-then语句在程序上一直出现,因此无处不在(我意识到这不是一回事)。 Prolog 有一个含义(->),但它与其他语言的布尔表达式不太一样。 -
我不同意这样一个事实,即这不会增加逻辑表达式的价值。我问这个问题是因为我有时会遇到逻辑表达式,如果我用箭头写它们比(不是 a)或 b 更有意义。就我而言,
if((condition1 => condition2) && (!condition1 => condition3)) statement看起来比if((!condition1 || condition2) && (condition1 || condition3)) statement更好 -
在 C++ 中,您可以定义一个运算符并使其以这种方式工作。我只说它是“有限使用”,因为如果我在代码中看到
if (A => B),在我的脑海中我会将它翻译成(not A) or B以弄清楚它的作用。但那是因为我不习惯认为“假意味着真”是真的。写!A || B与A => B相当简短,因此引入新运算符的动机并不高。至少我推测这就是它在程序语言中不流行的原因(并且可能是为了避免与实际的程序if-then结构混淆)。
标签: boolean logic truthtable