我正在阅读 Prolog 的力量,并且已经读到关于 Collatz 序列 的部分。
我从那里复制并粘贴代码,在之前添加适当的
use_module
行...
use_module(library(clpfd)).
hailstone(N, N).
hailstone(N0, N) :-
N0 #= 2*N1, % Error
hailstone(N1, N).
hailstone(N0, N) :-
N0 #= 2*_ + 1, % Error
N1 #= 3*N0 + 1,
hailstone(N1, N).
但是,当我尝试编译它时,在上面评论的两行中出现错误“hailstone.pl:nn:10: Syntax error: Operator expected”。
任何人都知道错误是什么,为什么我得到它?如您所见,我包含了 CLPFD 模块,因此它应该将
#=
识别为运算符。
我尝试使用
library(clpfd).
而不是第一行,但没有任何区别。
我正在使用 SWI-Prolog 以防它有什么不同。谢谢。