如何在屏幕上打印未绑定的变量?序言

时间:2016-03-03 10:14:23

标签: prolog

请帮我解决一个简单的问题!

我想将未绑定变量列表打印到屏幕上。

12 ?- write([X, Y]).

[_G1696,_G1699]

但我想在屏幕上看到[X,Y]而不是[_G1696,_G1699]。可能吗?怎么样?请帮助任何人

1 个答案:

答案 0 :(得分:0)

我假设您想要使用未绑定的变量漂亮打印条款?您可以使用事实上的标准numbervars/3谓词来完成它。例如:

pretty_print_term(Stream, Term) :-
    \+ \+ (
        numbervars(Term, 0, _),
        write_term(Stream, Term, [numbervars(true)])).

pretty_print_term_quoted(Stream, Term) :-
    \+ \+ (
        numbervars(Term, 0, _),
        write_term(Stream, Term, [numbervars(true), quoted(true)])).

在这些片段中,双重否定用于漂亮打印术语,同时放弃numbervars/3谓词对变量的实例化。

一个用法示例:

?- current_output(Stream), pretty_print_term_quoted(Stream, [X, Y]).
[A,B]
Stream = <stream>(0x10bebcf18).