Prolog 将常数连接到变量

Prolog 将常数连接到变量,prolog,Prolog,是否可能在同一个参数中关联共因变量和变量? 例如: expression(N):- write(t N), N1 is N+1, expression(N1). 其中tn变成t1,t2,t3。。。等等。如何执行此操作?在SWI序言中: expression(N) :- atom_concat('t', N, TN), % Note: N must be instantiated in this case write(TN),

是否可能在同一个参数中关联共因变量和变量? 例如:

  expression(N):-
       write(t N),
       N1 is N+1,
       expression(N1).  
其中
tn
变成
t1
t2
t3
。。。等等。如何执行此操作?

在SWI序言中:

expression(N) :-
    atom_concat('t', N, TN),  % Note: N must be instantiated in this case
    write(TN),
    N1 is N+1,
    expression(N1).
有趣的是,SWI对此很满意,即使
N
是一个整数或一个原子(在这种情况下,它将
N
视为一个原子)。GNU不喜欢
N
是整数。因此,您必须首先转换它:

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).