我正在尝试理解SWI-Prolog中的约束编程,正在查看这个教程:http://en.wikibooks.org/wiki/Prolog/Constraint_Logic_Programming
然而,似乎我在第一步就遇到了问题。
?- use_module(library(clpfd)).
true.
?- X #> Y, X in 1..3, Y=2.
ERROR: Syntax error: Operator expected
ERROR: X
ERROR: ** here **
ERROR: #> Y, X in 1..3, Y=2 .
?-
这里出了什么问题?我似乎已经引入了库,但教程中的第一行示例代码却报错了。我能找到的所有教程都使用像#=、#<等运算符。但是我的SWI-Prolog却不支持它们。它们是随约束库一起提供的额外语法吗?(我没有加载它吗?)
还是我误读了教程示例?
更新:尝试从Horsh的回复中理解事情。如果我在交互式终端中使用库并运行该行代码,则可以使其正常工作。但是,如果我尝试导入库并在源文件中使用这些运算符,则会再次出现错误。我哪里理解错误了吗?
更新2:
好的,如果我在源文件中调用库并编写一个包含 #> 的规则。然后我尝试从命令行咨询它。它将抛出一个错误,并且 #> 语法无法识别。如果我在咨询程序之前将库导入到命令行中,它就可以正常工作。这样做对吗?