所以我试图测试我定义如下的谓词reduce/4
:
:- op(20,xfy,?=).
reduce(R,X ?=Y,P,Q) :-
R=rename,
regle(X ?=Y,R),
length(P,N),
trouve(Y,P,N,M),
remove(N,M,P,Q).
但我一直收到这个错误:
?- reduce(rename,X ?= Y,[?=(X,Y),?=(f(a),g(Z)),?=(X,a)],Q].
ERROR: Syntax error: Illegal start of term
ERROR: reduce(rename,X ?= Y,[?=(X,Y),?=(f(a),g(Z)),?=(X,a)],
ERROR: ** here **
ERROR: Q] .
我是Prolog的新手所以也许这是愚蠢的事情。
答案 0 :(得分:1)
您使用]
代替)
来关闭reduce
的括号
reduce(rename,X ?= Y,[?=(X,Y),?=(f(a),g(Z)),?=(X,a)],Q].
% ^open ^close
您可以使用以下方法解决此问题:
?- reduce(rename,X ?= Y,[?=(X,Y),?=(f(a),g(Z)),?=(X,a)],Q).
我无法验证这是否解决了您的问题,因为您没有提供regle/2
等的定义。但是我收到语义错误这一事实似乎解决了语法错误。