我可以使用Prolog从其他文件中检索信息吗?

时间:2013-05-05 19:55:26

标签: prolog swi-prolog encapsulation

我正在尝试编写一个简单的翻译脚本,但文件变得很长而且令人困惑,主要是因为我已经将所有翻译存储在文件的末尾。它们的格式为动词(英语,芬兰语)。

我想知道是否有办法将它们存储在不同的文件中,所以我不需要处理它们。 我已经研究过使用咨询谓词,但我认为这并不是我需要的。在SWI-prolog中有没有办法做到这一点?

对于记录,如果我使用咨询谓词,我会收到以下错误消息:

但是,如果我尝试使用咨询谓词,我会收到此错误:

Warning: The predicates below are not defined. If these are defined
Warning: at runtime using assert/1, use :- dynamic Name/Arity.
Warning: 
Warning: verb/2, which is referenced by
Warning:        c:/users/grant/documents/prolog/string_dictionary.pl:6:8: 1-st clause of translate_word/2

2 个答案:

答案 0 :(得分:1)

你可以使用指令multifile,以及consult / 1或include / 1,但我建议转而使用 modules 。更多的工作,更好的维护和支持奖励。

在动词文件的顶部添加声明

:- module(verbs, [verb/2]).

然后在您的翻译脚本中添加

:- use_module(verbs).

答案 1 :(得分:0)

我认为consult/1就是你所需要的。

只需将您的verb事实(顺便说一句,为什么Verb在您的问题中大写?事实和规则名称不能以大写字母开头)到单独的文件中并在您的主要Prolog中查阅该文件文件。