Prolog SWI序言和文件扩展名:为什么赢得';swipl是否识别具有扩展名的文件?

Prolog SWI序言和文件扩展名:为什么赢得';swipl是否识别具有扩展名的文件?,prolog,swi-prolog,Prolog,Swi Prolog,我正在使用SWI-Prolog的命令行解释器swipl。我在包含文件test.pro的目录中运行它,并尝试调用 [test.pro]。 这会导致swipl喷出 错误:语法错误:应为运算符 错误:[测试 错误:**在这里** 错误:.pro]。 但是,如果我删除扩展,它就可以正常工作。有没有办法将文件名传递给swipl以加载扩展名不会导致此错误的文件?事实上,我想知道是什么导致了这个错误,因为SWI Prolog的网站并没有太大帮助。的参数是atom。包含点的原子必须被包围: ['test.pro

我正在使用SWI-Prolog的命令行解释器swipl。我在包含文件
test.pro
的目录中运行它,并尝试调用

[test.pro]。

这会导致swipl喷出

错误:语法错误:应为运算符
错误:[测试
错误:**在这里**
错误:.pro]。


但是,如果我删除扩展,它就可以正常工作。有没有办法将文件名传递给swipl以加载扩展名不会导致此错误的文件?事实上,我想知道是什么导致了这个错误,因为SWI Prolog的网站并没有太大帮助。

的参数是atom。包含点的原子必须被
包围

['test.pro'].

SWI prolog的惯例是使用“.pl”扩展名,因此,如果使用该扩展名,事情将运行得更加顺畅,您不必担心点

然后,您可以咨询:

[test].

。。它将采用.pl扩展名,并在您的文件夹中查找test.pl。

要完成Magus的回答,请注意,SWI Prolog允许您声明Prolog源文件的有效扩展名:将声明添加到~/.plrc(或windows对应文件)中

user:prolog_file_type(pro, prolog).
然后你就可以用

?- [test].

感谢您的提示,尽管现在显示配置文件名为
.swiplrc
。对于那些感兴趣的人来说,gprolog似乎除了支持
.pl
之外,还支持
.prolog
开箱即用,尽管不是
.prolog