[英]Why is this code in PROLOG using constraints gives Operator expected syntax error?
col_tri(Vars):- Vars=[X1,X2,X3],
Vars in 1..3,
X1#\=X2,
X1#\=X3,
X2#\=X3,
label(Vars).
这段代码在第 2 行(Vars in 1..3,)中给出了这个错误:错误:c:/users/xxxx/desktop/prolog/tp2.pl:2:20: Syntax error: Operator expected
运算符类似于 1 +
1 + 1
中的 +,在您的代码in
Vars in 1..3
的 in。
Prolog 代码可以在运行时定义新的运算符。
in
运算符不是 Prolog 的标准部分,它由 CLPFD 库定义,SWI Prolog 具有该库,但不会自动加载。
in
用于左侧的单个变量,还有ins
用于变量列表,例如您的Vars
。 所以代码应该变成:
:- use_module(library(clpfd)).
col_tri(Vars):- Vars=[X1,X2,X3],
Vars ins 1..3,
X1#\=X2,
X1#\=X3,
X2#\=X3,
label(Vars).
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.