首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prolog atom concat swi和yap prolog

prolog atom concat swi和yap prolog
EN

Stack Overflow用户
提问于 2011-07-24 03:20:18
回答 1查看 986关注 0票数 0

输入:

代码语言:javascript
复制
run([p(X,Y,Z),h(Z,P,Q)],Out).

代码:

代码语言:javascript
复制
:- ensure_loaded(library(lists)).

run([X|Y],Out) :-
   X =.. [Fct|Args],
   X =..Total,
   length(Args,L),
   concat(abs_,L,Fct_A),
   Out =.. [Fct_A|Total].

在swi prolog上,我得到了正确的答案:

代码语言:javascript
复制
A = abs_3(p, X, Y, Z).

在yap prolog上失败。看来我应该用yap了。

我必须使用什么来代替concat(abs_,L,Fct_A)?我尝试过atom_codes,但它在原子的末尾添加了奇怪的ascii。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-24 03:51:45

在这种情况下,SWI是错误的。目标atom_concat(a,1,X)必须根据ISO产生一个类型错误;IF,YAP,B,GNU,SICStus,XSB,Ciao都是这样的。在国际标准化组织中,有atom_chars/2number_chars/2。所以你想要的是

代码语言:javascript
复制
atom_number_concat(A, N, AN) :-
   number_chars(N, Chs),
   atom_chars(Na, Chs),
   atom_concat(A, Na, AN).

YAP有一个特殊的内置atom_number/2,它将取代前两个目标。

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

https://stackoverflow.com/questions/6802721

复制
相关文章

相似问题

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