我的数据库中有以下谓词,我从输入中成功解析了
19 ?- listing(element1).
:- dynamic element1/2.
element1('El1', [20]).
element1('El2', [25]).
element1('El3', [30]).
现在,给出一个适当的查询,例如'列出所有元素'我如何很好地输出它们,如:
'El1, El2, El3 have values 20, 25, 30 respectively' ?
答案 0 :(得分:3)
SWI-Prolog支持通过〜@ format specifier调用用户指定的谓词。所以,如果你写一个像
这样的谓词out_comma_sep_list(L) :- atomic_list_concat(L, ' ,', T), write(T).
你可以做到
report :-
findall(A-B, element1(A, B), L), pairs_keys_values(L, As, Bs),
format('~@ have values ~@ respectively',
[out_comma_sep_list(As), out_comma_sep_list(Bs)]).