我有一个列表L =[a+b,b+c]
,我想将其转换为字符串并打印输出a+bb+c
。
你能帮我把这个列表转换成字符串吗?我尝试在SWI-Prolog中使用atomic_list_concat
,但它为a+b
提供了类型错误。
答案 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).