在同一个参数中,关联常量和变量是否可能? 例如:
expression(N):-
write(t N),
N1 is N+1,
expression(N1).
其中t N
变为t1
,t2
,t3
...等。我该怎么做?
答案 0 :(得分:1)
在SWI序言中:
expression(N) :-
atom_concat('t', N, TN), % Note: N must be instantiated in this case
write(TN),
N1 is N+1,
expression(N1).
有趣的是,即使N
是整数或原子(在这种情况下它会将N
视为原子),SWI也对此感到满意。如果N
是整数,GNU不喜欢它。所以你必须先转换它:
expression(N) :-
number_atom(N, AtomN), % Note: N must be instantiated in this case
atom_concat('t', AtomN, TN),
write(TN),
N1 is N+1,
expression(N1).