SWI Prolog:如何查看预建的谓词代码?

时间:2015-03-01 22:32:31

标签: prolog predicate swi-prolog

我对如何构建一些谓词如downcase_atom/2感兴趣。有没有办法查看谓词代码?

1 个答案:

答案 0 :(得分:6)

您可以从查看谓词属性开始:

?- 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本身的来源。您会发现谓词是在文件src/os/pl-ctype.c中的C代码中定义的。在其他情况下,可以在Prolog代码中定义系统谓词,在这种情况下,上述步骤可以为您提供定义它们的源文件的名称和位置。