prolog原子concat swi和yap prolog
输入: 代码: 在swi prolog上,我得到了正确的答案:prolog原子concat swi和yap prolog,prolog,iso-prolog,yap,Prolog,Iso Prolog,Yap,输入: 代码: 在swi prolog上,我得到了正确的答案: :- 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]. 在yap prolog上失败。我知道我应该用yap 我必须用什么来代替concat(abs,L,Fct,A)?我尝试
:- 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].
在yap prolog上失败。我知道我应该用yap
我必须用什么来代替concat(abs,L,Fct,A)?我尝试了atom_代码,但它在atom的末尾附加了奇怪的ascii码。请帮助。在这种情况下,SWI不正确。原子(a,1,X)的目标必须根据ISO产生类型错误;如果,是的,B,GNU,SICStus,XSB,Ciao都是这样的。在ISO中,有
原子字符/2
和数字字符/2
。所以你想要的是
A = abs_3(p, X, Y, Z).
YAP有一个特殊的内置的
atom_编号/2
,它将取代前两个目标。在这种情况下,SWI是不正确的。原子(a,1,X)的目标必须根据ISO产生类型错误;如果,是的,B,GNU,SICStus,XSB,Ciao都是这样的。在ISO中,有原子字符/2
和数字字符/2
。所以你想要的是
A = abs_3(p, X, Y, Z).
YAP有一个特殊的内置
atom\u number/2
,它将取代前两个目标。atomic\u concat/2
可能会工作,但它会让你在打字时感到相当头痛。atomic\u concat/2
可能会工作,但会让你在打字时感到相当头痛。
atom_number_concat(A, N, AN) :-
number_chars(N, Chs),
atom_chars(Na, Chs),
atom_concat(A, Na, AN).