0
portray_clause печатает каждый атом на новой строке. Например:Prolog: как portray_clause без новых строк
?- portray_clause((p(X):-q(X),r(X))).
p(A) :-
q(A),
r(A).
Есть ли простой способ распечатать предложение на одной строке?
У меня есть следующее решение, но оно неэлегантно и работает только с прологом SWI, а не с YAP.
with_output_to(atom(A), portray_clause((Head:-Body))),
split_string(A, "\n", '', Words),
atomic_list_concat(Words,'',Out),
writeln(Out).
вы можете использовать writeq (T) или формат ('~ д ~ п', [T]) – CapelliC
Точка 'portray_clause/1 'is to pretty-print the clause. Для чего вам это нужно? Если у вас есть предложение, вы можете просто распечатать его с использованием любого предиката для (форматированного) письма, как это предлагает @CapelliC. –
Мой вопрос был неточным. Я хотел бы дать именам переменных лучше, чем _G3882, _G3883 и т. Д. –