lookup([(X,A)|_],X,A).
lookup([_|L],X,A) :- lookup(L,X,A).
hi(_,t,bool).
hi(_,f,bool).
hi(g,var(X),Y) :- lookup(g,X,Y).
hi(_,in(X),int).
hi(_,fl(X),real_exp).
hi(g,plus(A,B),int) :- hi(g,A,int),hi(g,B,int),!.
У меня есть вышеприведенная строка кода в Прологе, которая в основном проверяет тип операции плюс .
поэтому, когда у меня есть следующий запрос на терминале:
hi([],plus(in(1),in(2)),T).
я получаю ответ как ложный вместо T = int
.
, что может быть правильной строкойкода в моей программе?Я не могу разобраться в ошибке !!!!