2017-02-11 1 views
1

Я пытался написать правило, чтобы сообщить, когда возможно, чтобы «А» был братом «В», но я получил одну ошибку и одно предупреждение первая ошибка говорит: no permission to modify static procedure (\=)/2 и предупреждение говорит: Singleton variables [A,B]. Я понимаю, что переменная singleton означает, что переменная используется только один раз, но я не могу понять, как исправить мой код, но я не понимаю, первая ошибка, я новичок в Прологе, так что это может быть глупая ошибка, что я не может найти.нет разрешения на изменение статической процедуры ( =)/2 прологовая ошибка

brother(A,B):- 
    parent(X,A), 
    parent(X,B), 
    male(A). 
A \= B. 
+1

Я только что отрегулировал отступ: теперь вы должны увидеть ошибку! – false

+0

@false О, полная остановка, моя плохо! – marwagaser

+1

@false ИМХО, вы должны были дать ответ вместо того, чтобы корректировать исходный вопрос, потому что другие, кто может сюда приехать, могут не знать, как просмотреть исходное неправильное форматирование. –

ответ

2

Примечание: @false дал правильный намек. Это просто ответ на этот вопрос.

Исходный код ОП получил ошибку от:

brother(A,B):- 
parent(X,A), 
parent(X,B), 
male(A). 
A \= B. 

и ошибки:

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

Путем изменения отступов, как отмечено @false

brother(A,B):- 
    parent(X,A), 
    parent(X,B), 
    male(A). 
A \= B. 

Он стал очевидно для ОП, что существует full stop с male(A)., что не должно быть там.

Изменение кода

brother(A,B):- 
    parent(X,A), 
    parent(X,B), 
    male(A), 
    A \= B. 

удалили ошибку.