請幫我簡單的問題!如何在屏幕上打印未綁定的變量? Prolog
我想將未綁定變量的列表打印到屏幕上。
12 ?- write([X, Y]).
[_G1696,_G1699]
但我想看到的事實[X,Y]屏幕,而不是[_G1696,_G1699]
上。可能嗎?怎麼樣?請幫助任何人
請幫我簡單的問題!如何在屏幕上打印未綁定的變量? Prolog
我想將未綁定變量的列表打印到屏幕上。
12 ?- write([X, Y]).
[_G1696,_G1699]
但我想看到的事實[X,Y]屏幕,而不是[_G1696,_G1699]
上。可能嗎?怎麼樣?請幫助任何人
我假設你想漂亮的打印條款與未綁定的變量?您可以使用事實上的標準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).
謝謝!但我不能強迫numbervars/3選擇相同的變量名稱? (完全是X,Y而不是A,B) – Svetlana
@Svetlana你不能用'numbervars/3'來做到這一點。 –
見[此答案](http://stackoverflow.com/a/7948525/772868)如何編寫和以一般方式讀變量名。 – false
'write_term([X,Y],[variable_names(['X'= X,'Y'= Y])])。' – false
非常感謝! – Svetlana