通过 Gnu Prolog 中的布尔 OR 组合两个事实
Combining two facts via a boolean OR in Gnu Prolog
我是 Prolog 的新手。所以请原谅这个可能非常简单的问题:我有一些事实,比如
likes(peter,cars).
likes(maria,bikes).
likes(walter,bikes).
likes(paul,bikes).
likes(paul,cars).
在文件中 likes.pl
。现在我正在尝试检查 paul
是否喜欢 cars
和 bikes
,所以我尝试了GNU Prolog 的 REPL:
| ? - [likes].
| ? - likes(paul,bikes) #\/ likes(paul,cars).
但我收到“未捕获的异常:...”。显然我做错了什么。 - 如何在 GNU Prolog 中将两个事实与 AND 结合起来?
您正在使用的运算符 #\/
是约束规划中使用的布尔有限域运算符 clp(b)
。
如果您只需要两个事实 A 和 B 的结合,请使用 A, B
。如果你想分离它们,请使用 A; B
.
在您的情况下,您只需键入 likes(paul, bikes), likes(paul, cars).
。
我是 Prolog 的新手。所以请原谅这个可能非常简单的问题:我有一些事实,比如
likes(peter,cars).
likes(maria,bikes).
likes(walter,bikes).
likes(paul,bikes).
likes(paul,cars).
在文件中 likes.pl
。现在我正在尝试检查 paul
是否喜欢 cars
和 bikes
,所以我尝试了GNU Prolog 的 REPL:
| ? - [likes].
| ? - likes(paul,bikes) #\/ likes(paul,cars).
但我收到“未捕获的异常:...”。显然我做错了什么。 - 如何在 GNU Prolog 中将两个事实与 AND 结合起来?
您正在使用的运算符 #\/
是约束规划中使用的布尔有限域运算符 clp(b)
。
如果您只需要两个事实 A 和 B 的结合,请使用 A, B
。如果你想分离它们,请使用 A; B
.
在您的情况下,您只需键入 likes(paul, bikes), likes(paul, cars).
。