Prolog语法错误:非法开始学期

时间:2015-12-14 12:51:53

标签: prolog syntax-error

所以我试图测试我定义如下的谓词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的新手所以也许这是愚蠢的事情。

1 个答案:

答案 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等的定义。但是我收到语义错误这一事实似乎解决了语法错误。