在SWI prolog中添加搜索路径

时间:2011-06-13 17:40:52

标签: prolog

在许多Prolog系统中,很容易为咨询文件添加新的搜索路径。 例如,在Yap中,我知道的谓词是add_to_path(NewPath)。 有没有办法在SWI Prolog中做同样的事情?我的问题是专门为已经存在的路径添加一个路径,我知道用于声明目录的file_search_path / 2谓词,以及用于更改当前目录的cd / 1谓词,但我想知道是否有替代方法,就像我在Yap找到的方法。

提前感谢!

2 个答案:

答案 0 :(得分:7)

.plrc / .yaprc / .sicstusrc / .swiplrc中填写

 :- multifile(library_directory/1).
 library_directory('/home/ulrich/lftp/Prolog-inedit').

答案 1 :(得分:7)

这有几种机制。我遇到的第一个是C-Prolog,它确实使用了library_directory/1的子句。目前的SWI-Prolog机制源自Quintus,也用于SICStus。它从library_directory/1方法推广 将表单<alias>(Path)的表达式视为对路径别名<alias>的搜索。

使用谓词file_search_path/2定义别名的路径。现在,library只是一个别名。通常,使用子句file_search_path(library, Dir)添加库。

这种机制已被证明非常灵活。当然,如果Prolog系统在这里更兼容,那将是很好的。我想今天YAP也支持file_search_path系统。 (2016年编辑:确实如此,见YAP Prolog User's Manual: Changing the Compiler’s Behavior