2016-03-18 4 views
0

Я имею в .pl файла следующие файлы:Получить все предикаты, которые являются глаголом и являются Предикат

... 
verb(love). 
verb(think). 
love(mom, dad). 
noun(head). 

insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre). 
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)). 
:-insertAll. 

getAll(N):-verb(N), current_predicate(N/2). 

... 

Я хочу, чтобы получить все предикаты, которые являются глаголом, и представляют собой предикат арности 2

getAll(N). 

Выход:

Result = [love]. 

ответ

0

Ваш код работать отлично, ОНЛ Проблема заключается в том, что вам нужно указать, что глагол является динамическим.

Ваш .pl файл

... 

:-dynamic verb/1 

verb(love). 
verb(think). 
love(mom, dad). 
noun(head). 

insert(Pre):- Pre =.. [N | Param], assertz(verb(N)), assertz(Pre). 
insertAll:- insert(walk(henry, park)), insert(punch(ken, henry)). 
:-insertAll. 

getAll(N):-verb(N), current_predicate(N/2). 

... 

Запрос

getAll(N). 

Выход

N = love ; 
N = walk ; 
N = punch. 
Смежные вопросы