将常量连接到变量

时间:2013-06-29 18:01:30

标签: prolog

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

  expression(N):-
       write(t N),
       N1 is N+1,
       expression(N1).  

其中t N变为t1t2t3 ...等。我该怎么做?

1 个答案:

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