【问题标题】:Prolog - How to use multiple pl file inside pl fileProlog - 如何在pl文件中使用多个pl文件
【发布时间】:2015-04-23 19:01:56
【问题描述】:

我是 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 文件?如何将这些文件导入一个文件?如何使用/导入“verbs.pl”和“names.pl”在第三个文件中使用这个“关系”事实?

【问题讨论】:

  • 您想要介绍模块系统还是只需要consult 谓词?
  • 咨询不起作用。我试过了。
  • “不起作用”是什么意思?你试过什么?它应该工作。您是否收到任何特定的错误或警告消息?

标签: prolog swi-prolog


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

    最简单的解决方案是使用第三个文件的内容:

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

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

    【讨论】:

    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 2013-11-07
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多