2015-10-20 52 views
0

我需要使用prolog将所有列表元素置于列表的外部。 ['1','2','3',a,b,c]成为X='1','2','3',a,b,c 我需要如上所示的结果X.获取序言中的所有列表元素

是否可能得到结果?

+2

咦?你希望多个值与单个变量统一,但不是一个列表?那个怎么样? –

回答

2

这将直接显示您要求的内容(我假设您严格按照显示目的对结果感兴趣)。

print_list(L) :- 
    write('X='), 
    print_list_aux(L), !. 

print_list_aux([H1,H2|T]) :- 
    print(H1), 
    write(','), 
    print_list_aux([H2|T]). 
print_list_aux([X]) :- 
    print(X), 
    nl. 
print_list_aux([]) :- nl. 

例子:

?- print_list(['1', '2', a, b]). 
X='1','2',a,b 
true. 

?- 

如果您使用的write/1代替print/1,可以消除上的数字引号的输出,因此这将是:X=1,2,a,b

+0

谢谢你的答案。它仅适用于打印目的 – Gamsh

+0

@Gamsh在技术上任何时候你写一个数据项供用户看,它是用于显示的目的。但是,在Prolog中,列表的更自然的表示是括号。所以,如果你说'X = ['1','2',a,b]),写(X).'',你会得到'[1,2,a,b]''write'输出,你不需要任何特殊的代码来获得它。 – lurker