如何将列表转换为Prolog中的字符串?

时间:2012-09-14 06:48:06

标签: prolog swi-prolog

我有一个列表L =[a+b,b+c],我想将其转换为字符串并打印输出a+bb+c

你能帮我把这个列表转换成字符串吗?我尝试在SWI-Prolog中使用atomic_list_concat,但它为a+b提供了类型错误。

2 个答案:

答案 0 :(得分:2)

在SWI-Prolog中:

?- with_output_to(atom(Atom), maplist(write, [a+b, b+c])).
Atom = 'a+bb+c'.

如果您需要更好地控制条款(例如write)的写入方式,则可以通过调用自定义谓词来替换a+b

答案 1 :(得分:1)

列表中的成员是复合词,因此在调用atomic_list_concat之前必须使它们成为原子:

custom_print(L) :-
  maplist(term_to_atom, L, L1),
  atomic_list_concat(L1, L2),
  print(L2).