有没有办法让portray_clause写入变量而不是标准输出?
?- portray_clause(f(x):app(X, Y, Z)).
f(x):app(_, _, _).
true.
?- portray_clause(Output, f(x):-app(X, Y, Z)).
ERROR: Arguments are not sufficiently instantiated
提前谢谢
答案 0 :(得分:3)
如果您使用的是SWI-Prolog,则可以使用with_output_to/2
。例如,要写一个原子,你说:
?- with_output_to(atom(A), portray_clause(foo(X) :- bar)).
A = 'foo(_) :-\n\tbar.\n'.