Prolog - 如何在 pl 文件内使用多个 pl 文件

Met*_*soy 3 prolog swi-prolog

我是 Prolog 的新人。我有两个文件。其中之一是“names.pl”,另一个是“verbs.pl”。这两个文件都有事实。“names.pl”有关于很多名词等的事实。事实的名称是关系。

这些文件的模板:relation(notion_1,relation,notion_2) 示例:

relation('accumulator','shape','rectangle').
relation('packing','shape','rectangle').
relation('gold','live / lifeless','lifeless').
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在一个文件中使用这 2 个 pl 文件?如何将这些文件导入到一个文件中?如何使用/导入“verbs.pl”和“names.pl”在第三个文件中使用这个“关系”事实?

Pat*_* S. 5

使用consult,就像您使用 swi 一样,您可以使用缩写形式。SWI 自动附加.pl到文件名。

% short form:
:- [verbs, names].

%longer form:
:- consult(varbs).
:- consult('names.pl').
Run Code Online (Sandbox Code Playgroud)

如果relation这两个文件中都有事实,您可以使用include

:-include('verbs.pl').
:-include('names.pl').
Run Code Online (Sandbox Code Playgroud)

这两个文件假设您设置了第三个文件。

您还可以将谓词声明为multifile, 其中

:-multifile(relation/3).
Run Code Online (Sandbox Code Playgroud)

那么 prolog 就不会覆盖先前定义的谓词的声明。

这里是SWI的加载和咨询文档