Syntax Prolog参数模式指示器导致输出错误

Syntax Prolog参数模式指示器导致输出错误,syntax,prolog,Syntax,Prolog,我试图在方法()的签名中使用Prolog的参数模式指示符 没有指示器,我的函数按预期工作(例如,回文([1,2,1])为true): 但是当我说 palindrome(+List) :- reverse(List, List) 我每次都是假的。我没有收到任何错误或警告。我也尝试了以下方法,但没有成功: palindrome(+List) :- reverse(+List, +List) 所以我很确定我用错了这些指标。有人能帮忙吗?我正在使用SWI Prolog和SWI

我试图在方法()的签名中使用Prolog的参数模式指示符

没有指示器,我的函数按预期工作(例如,
回文([1,2,1])
为true):

但是当我说

palindrome(+List) :- 
    reverse(List, List) 
我每次都是假的。我没有收到任何错误或警告。我也尝试了以下方法,但没有成功:

palindrome(+List) :- 
    reverse(+List, +List) 

所以我很确定我用错了这些指标。有人能帮忙吗?我正在使用SWI Prolog和SWISH online IDE。

是,错了。你根本不应该在代码中使用它们。只有在评论中

+
被解释为一个单独的标记:

6 ?- atom(+X).
false.

7 ?- +X =.. Z.
Z = [+, X].

8 ?- +X = + X.
true.

9 ?- +X = '+'(X).
true.
您可以使用
+
-如您所示使用谓词定义,但这是毫无意义的:

14 ?- [user].
bar(+X,+X).
|: 
true.

15 ?- bar( + 1, +Z).
Z = 1.
有些语言确实允许我们声明模式,就像我认为Mercury那样。但不是序言。在Prolog中,我们仅将其用作注释,以指导我们对代码的使用和理解

14 ?- [user].
bar(+X,+X).
|: 
true.

15 ?- bar( + 1, +Z).
Z = 1.