gpt4 book ai didi

序言菜鸟 : Constraint Programming library or syntax issue in SWI-Prolog

转载 作者:行者123 更新时间:2023-12-04 03:02:18 27 4
gpt4 key购买 nike

我只是想弄清楚 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:

好的。如果在我的源文件中调用库,然后编写包含 #> 的规则。然后我尝试从命令行查询它。它会抛出错误,并且无法识别 #> 语法。如果将库导入命令行 之前 尝试咨询该程序,它起作用了。这可以吗?

最佳答案

基于 Horsh 的回答,您应该在源代码中导入该库,记住将 ?-在行的开头,像这样:

?- use_module(library(clpfd)).
?-告诉 SWI-Prolog 执行该行,就好像它是直接输入解释器一样,而不是试图在程序中将其声明为谓词。

不要担心 SWI-Prolog 多次导入库,它知道检查库是否被修改,并且只有在库自上次加载后发生更改时才重新加载它。

关于序言菜鸟 : Constraint Programming library or syntax issue in SWI-Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com