CLPFD Prolog 的“语法错误:需要运算符”

"Syntax error: Operator expected" with CLPFD Prolog

提问人:Avrohom Yisroel 提问时间:3/26/2023 最后编辑:falseAvrohom Yisroel 更新时间:3/27/2023 访问量:81

问:

我正在阅读 The Power Of Prolog,并且已经了解了 Collatz 序列的部分。

我从那里复制并粘贴了代码,在之前添加了适当的行......use_module

use_module(library(clpfd)).

hailstone(N, N).
hailstone(N0, N) :-
   N0 #= 2*N1,    % Error
   N0 #> 1,       % ensures termination
   hailstone(N1, N).
hailstone(N0, N) :-
   N0 #= 2*_ + 1, % Error
   N0 #> 1,       % ensures termination
   N1 #= 3*N0 + 1,
   hailstone(N1, N).

但是,当我尝试编译它时,在上面注释的两行上收到错误“hailstone.pl:nn:10:语法错误:预期运算符”。

有人知道错误是什么,为什么我会得到它吗?正如你所看到的,我包括了 CLPFD 模块,所以它应该被识别为一个运算符。#=

我尝试使用代替第一行,但没有任何区别。library(clpfd).

我正在使用 SWI-Prolog,以防它有任何区别。谢谢。

Prolog CLPFD Collatz

评论

2赞 brebs 3/26/2023
您应该使用 ,如 swi-prolog.org/man/clpfd.html:- use_module...
0赞 Avrohom Yisroel 3/26/2023
啊,令人惊讶的是,错过这些小微妙之处是多么容易!很明显,现在你指出来了。我最终会到达那里:)非常感谢。
0赞 Avrohom Yisroel 3/27/2023
@brebs 不知道你的意思。请你解释一下。谢谢
0赞 false 3/27/2023
我编辑了您的代码以确保终止,例如?- hailstone(1, N).

答: 暂无答案