Я пытаюсь использовать ванильный мета-интерпретатор с 'if' и 'и'.
Вот мой код: -
:- op( 600, xfy, if).
:- op( 500, xfy, and).
findnum(X,X).
findnum(X,[X|Tail]).
findnum(X,[Y|Tail]):-
findnum(X,Tail).
prove(true).
prove((A,B)):- !,prove(A),prove(B).
prove(A and B):-
!,prove(A),prove(B).
prove(A):-
clause(A,B),
prove(B).
, когда оба условия верны.
?-prove((findnum(a,[a,b,c]) and findnum(a,[a,b,c]))).
true
когда первое условие ложно.
?-prove((findnum(a,[b,b,c]) and findnum(a,[a,b,c]))).
false
но когда второе условие ложно, возвращается ошибка Нет разрешения на доступ к private_procedure `true / 0 '
?-prove((findnum(a,[a,b,c]) and findnum(a,[b,b,c]))).
ERROR: No permission to access private_procedure `true/0'
пожалуйста, помогите, спасибо.