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 将不会覆盖之前定义的谓词的声明。
我是 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 将不会覆盖之前定义的谓词的声明。