Syntax Prolog参数模式指示器导致输出错误
我试图在方法()的签名中使用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
回文([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.