在Prolog中将portray_clause变为变量

时间:2013-12-14 13:16:18

标签: prolog swi-prolog

有没有办法让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

提前谢谢

1 个答案:

答案 0 :(得分:3)

如果您使用的是SWI-Prolog,则可以使用with_output_to/2。例如,要写一个原子,你说:

?- with_output_to(atom(A), portray_clause(foo(X) :- bar)).
A = 'foo(_) :-\n\tbar.\n'.