Это, вероятно, очень глупый вопрос (я только начал изучать Пролог несколько часов назад), но возможно ли найти все пункты, относящиеся к атому? Например, предполагая следующую базу знаний:
cat(tom).
animal(X) :- cat(X).
, есть ли способ получить всевозможную информацию о Томе (или хотя бы все факты, которые явно указаны в базе)? Я понимаю, что такой запрос невозможен:
?- Pred(tom).
поэтому я подумал, что смогу написать правило, которое выведет правильную информацию:
meta(Object, Predicate) :-
Goal =.. [Predicate, Object],
call(Goal).
, чтобы я мог писать запросы, такие как
?- meta(tom, Predicate).
но это не работает, потому что аргументы для call
не созданы достаточно. Итак, в основном мой вопрос: это вообще возможно, или Prolog не предназначен для предоставления такого рода информации? А если это невозможно, то почему?