Этот предикат позволяет метапрограммировать, то есть рассуждать о вашей программе Prolog.
SWI-Prolog использует clause/2
in, a.o., предикат explain
:
?- explain(member).
"member" is an atom
Referenced from 12-th clause of pce_meta:pce_to_pl_type/3
lists:member/2 is a predicate defined in
c:/program files/swi-prolog/library/lists.pl:81
Referenced from 1-th clause of prolog_dialect:source_exports/2
Referenced from 1-th clause of pce_config:term_description/2
Referenced from 1-th clause of pce_config:config_attribute/2
Referenced from 1-th clause of pce_config:load_config_key/2
Referenced from 1-th clause of pce_config:term_description/3
Referenced from 1-th clause of pce_config:current_config_path/1
Referenced from 4-th clause of persistent_frame:has_specifier/1
true.
и при реализации Правил обработки ограничений . Я подозреваю, что это также полезно для программирования индуктивной логики и различных других расширений Prolog.
Подробное введение в метапрограммирование в Прологе см. Искусство Пролога от Стерлинга и Шапиро.