SWI Prolog: как просмотреть готовый код предиката?

Мне интересно, как построены некоторые предикаты вроде downcase_atom/2. Есть ли способ просмотреть код предиката?


person Unsparing    schedule 01.03.2015    source источник
comment
Весь исходный код SWI Prolog доступен на их веб-сайте. Просто проверьте ссылку СКАЧАТЬ.   -  person lurker    schedule 02.03.2015


Ответы (1)


Вы можете начать с изучения свойств предиката:

?- predicate_property(downcase_atom(_,_), P).
P = visible ;
P = built_in ;
P = foreign ;
P = imported_from(system) ;
P = nodebug ;
false.

Это говорит о том, что предикат импортирован из модуля system. Если вы посмотрите на свойства этого модуля:

?- module_property(system, P).
P = class(system) ;
P = exports([]) ;
P = program_size(113424) ;
false.

вы увидите, что с модулем не связан ни один исходный файл. Итак, в этом случае вам нужно будет изучить исходники самого SWI-Prolog. Вы обнаружите, что предикат определен в коде C в файле src/os/pl-ctype.c. В других случаях системные предикаты могут быть определены в коде Prolog, и в этом случае приведенные выше шаги могут дать вам имя и расположение исходных файлов, определяющих их.

person Paulo Moura    schedule 01.03.2015
comment
Я надеюсь, что можно также получить исходный код user- определенные предикаты. - person Anderson Green; 05.10.2017