我想给一个变量分配一个布尔值。
我试过类似的东西。
Diagonal is (XPiece = XFinal)
Diagonal is (XPiece =:= XFinal)
Diagonal is (XPiece is XFinal)
无工作......
任何解决方案?
我想给一个变量分配一个布尔值。
我试过类似的东西。
Diagonal is (XPiece = XFinal)
Diagonal is (XPiece =:= XFinal)
Diagonal is (XPiece is XFinal)
无工作......
任何解决方案?
的Prolog的内部谓词is/2
计算表达式的右侧作为一个算术表达式并结合与左侧的结果。
另外,prolog没有布尔类型。序言的内置类型是
你可以选择将表示一个布尔值作为原子true
/false
(有助于阅读),或者您可以将整数值表示为一个布尔值1
/0
(用于计算)。尽管大多数过程语言,比如C,都将算术值作为布尔值来破坏WRT形式逻辑,但是:伪造是单值(0)和真值(非零),这意味着这不是错误的。在形式逻辑中,真理是单值的,虚假被定义为不真实的。
所以你可能想考虑你的表示的语义,并建立一些谓词来操纵你的布尔值,可能会添加一些运算符来“扩展”序言。
我明白了,谢谢。 –
什么
diagonal(XPiece, XFinal) :- XPiece = XFinal.
我有!想到这一点,但我希望在这个特定的谓词中计算这个值,然后再传递给它将要传递给它的谓词。 –
@Francisco:你能给更多的上下文吗? – Jiri
是的,我意识到我的问题是缺乏这一点。只需一秒钟。 –
使用IF-THEN-ELSE:
(XPiece = XFinal ->
Diagonal = true
;
Diagonal = false
)
或使用1
/0
,或任何你想要的。另外,使用CLP(FD),支持你想要的成语:
use_module(library(clpfd)).
diag(XPiece, XFinal, Diagonal) :-
Diagonal #= (XPiece #= XFinal).
哪里左方括号中'\ +(对角线(FormerX,X)关闭,' – Jiri
得到它谢谢 –