Мне интересно, как построены некоторые предикаты вроде downcase_atom/2
. Есть ли способ просмотреть код предиката?
SWI Prolog: как просмотреть готовый код предиката?
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
Я надеюсь, что можно также получить исходный код user- определенные предикаты.
- person Anderson Green; 05.10.2017