全部。
我想为变量分配一个布尔值。
我试过类似的东西。
Diagonal is (XPiece = XFinal)
Diagonal is (XPiece =:= XFinal)
Diagonal is (XPiece is XFinal)
没有工作...
有什么解决办法吗?
Prolog 的内置谓词is/2
将表达式的右侧计算为算术表达式,并将结果与左侧统一。
此外,prolog 没有布尔类型。Prolog 的内置类型是
您可以选择将布尔值表示为原子true
/ false
(对可读性有用),或者您可以将布尔值表示为整数值1
/ 0
(对计算有用)。大多数过程语言,如 C,将算术值评估为布尔值的方式被破坏了 WRT 形式逻辑,但是:假是单值 (0) 和真值是多值 (非零),这意味着它不是假的。在形式逻辑中,真值是单值的,假值被定义为不真值。
因此,您可能需要考虑表示的语义并构建一些谓词来操作您的布尔值,可能会添加一些运算符来“扩展”prolog 一点。
使用 if-then-else:
(XPiece = XFinal ->
Diagonal = true
;
Diagonal = false
)
或使用1
/ 0
,或任何你想要的。或者,使用支持您想要的成语的 CLP(FD):
use_module(library(clpfd)).
diag(XPiece, XFinal, Diagonal) :-
Diagonal #= (XPiece #= XFinal).
关于什么
diagonal(XPiece, XFinal) :- XPiece = XFinal.