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

Prolog - How to use multiple pl file inside pl file

我是 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').

我的问题是,如何在一个文件中使用这 2 个 pl 文件?如何将这些文件导入一个文件中?我如何在第 3 个文件 using/importing "verbs.pl" 和 "names.pl" 中使用这个 "relation" 事实?

最简单的解决方案是拥有包含以下内容的第三个文件:

:- include(file1).
:- include(file2).

根据 include/1 标准指令检查 Prolog 系统的文档。

使用consult,因为你使用的是swi,所以可以使用缩写形式。 SWI 自动将 .pl 附加到文件名。

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

%longer form:
:- consult(varbs).
:- consult('names.pl').

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

:-include('verbs.pl').
:-include('names.pl').

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

您还可以将谓词声明为 multifile,使用

:-multifile(relation/3).

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

这里是 documentation of SWI for loading and consulting.