首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog term_expansion不工作

Prolog term_expansion不工作
EN

Stack Overflow用户
提问于 2016-06-29 11:05:28
回答 1查看 152关注 0票数 1

我正在尝试使用swipl执行以下term_expansion:

代码语言:javascript
复制
a(asda).
a(astronaut).

term_expansion(a(X),b(X)).

但它不起作用,即没有咨询b/1。我试过几种变体:

代码语言:javascript
复制
term_expansion(a(X),[b(X)]).
user:term_expansion(a(X),b(X)).
user:term_expansion(a(X),[b(X)]).
user:term_expansion(user:a(X),[user:b(X)]).

都不管用。有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-29 14:48:18

正如@mat所解释的,在加载要展开的子句之前,需要定义term_expansion/2谓词。此外,term_expansion/2谓词是为user伪模块定义的多文件和动态谓词.因此,你应该写:

代码语言:javascript
复制
:- multifile user:term_expansion/2.
:- dynamic user:term_expansion/2.

user:term_expansion(a(X), b(X)).

这将确保您的扩展代码将工作,如果您将它移动到一个模块。

如果可移植到具有术语扩展机制的其他Prolog系统(顺便说一句,这远不是标准的),那么请考虑将术语扩展代码移到自己的文件中,在要展开的源文件之前加载。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38097774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档