2013-05-14 8 views
0

Я использую yap. Предположим, у меня есть такой сценарий:пролог удалить голову из статьи

p (x, y): - q (x), f (x, y), g (x).

Мне нужно поместить тело предиката в список, используя команду (p).

Ожидаемый результат должен быть: [q, f, g].

Как я могу это сделать?

+0

Возьмите выход 'listing' и извлечь необходимую информацию, может быть? – 2013-05-14 17:45:31

+0

как это можно сделать? Я пролог новичок :) – ameyer

ответ

0

с сервисным предиката

enum_conj((A, B),X) :- !, (enum_conj(A, X) ; enum_conj(B, X)). 
enum_conj(X, X). 

мы можем сделать

?- clause(p(_, _), P), setof(F, J^A^(enum_conj(P, J), functor(J, F, A)), L). 
L = [f,g,q], 
P = (q(x),f(x,y),g(x)) 

всех встроенных команд, используемых в ISO стандарт