我想知道是否可以在prolog中分隔文件,例如: 我希望我的界面,规则,事实,参与单独的文件,并让它们一起工作。
答案 0 :(得分:2)
是的 - 查看SWI-Prolog文档中的“模块”。
简而言之,您查阅一个文件并加载其他文件。所以,假设你有a.pl,b.pl等等
这是b.pl
承担(X): - 写('我看到一只名为'的熊),writeln(X)。 bull(X): - 写('我看到一个名为'的公牛),writeln(X)。在b.pl
的顶部把
: - 模块(b,[bear / 1])。
现在你可以在这个文件之外使用bear(/ 1表示'带有一个参数')。
在a.pl put
: - use_module(b)。
请注意,
上没有.pl然后你可以参考熊
最终节目
a.pl
: - use_module(b)。
去吧: - 熊('Yogi')。b.pl
: - 模块(b,[bear / 1])。
承担(X): - 写('我看到一只名为'的熊),writeln(X)。 bull(X): - 写('我看到一个名为'的公牛),writeln(X)。通过这种方式,您可以将bull / 1之类的内容设置为单个模块。
答案 1 :(得分:1)
简短的回答,是的。答案很长,取决于“界面”的含义以及您的要求有多简单或复杂。正如mbratch指出的那样,ISO Prolog标准include/1
指令可用于包括例如包含这些谓词定义的文件中的一组谓词指令。另一方面,如果您的应用程序需要多个相同接口的实现,您可以将Prolog模块与include/1
指令一起使用,其中每个模块将提供实现,具体取决于您希望作为接口或使用Logtalk,它提供接口作为第一类实体。但是,更合理的建议和详细的答案要求您提供有关您要完成的内容的更多信息。