没有修改静态过程的权限(\ =)/ 2序言错误

mar*_*ser 2 compiler-errors prolog

我试图写一条规则来告诉“ A”何时可能成为“ B”的兄弟,但是我遇到了一个错误,一个警告是第一个错误说:no permission to modify static procedure (\= )/2 而警告说:Singleton variables [A,B]。我知道单例变量意味着该变量只能使用一次,但是我无法找到一种方法来修复代码,但是我不了解第一个错误,因为我是Prolog初学者,因此它可能恰好是我的一个愚蠢错误找不到。

 brother(A,B):-
    parent(X,A),
    parent(X,B),
    male(A).
 A \= B.
Run Code Online (Sandbox Code Playgroud)

Guy*_*der 5

注意:@false提供了正确的提示。这只是将答案作为答案。

OP的原始代码收到以下错误:

brother(A,B):-
parent(X,A),
parent(X,B),
male(A).
A \= B.
Run Code Online (Sandbox Code Playgroud)

和错误:

ERROR: xyz.pl:8:
    No permission to modify static procedure `(\=)/2'
Run Code Online (Sandbox Code Playgroud)

通过更改缩进,如@false所示

brother(A,B):-
   parent(X,A),
   parent(X,B),
   male(A).  
A \= B.
Run Code Online (Sandbox Code Playgroud)

对于OP来说,显然不应该有一个full stopwith male(A).。

将代码更改为

brother(A,B):-
    parent(X,A),
    parent(X,B),
    male(A),
    A \= B.
Run Code Online (Sandbox Code Playgroud)

消除了错误。