write_term/[2,3] [ISO,hookable]write_term(+Stream, +Term, +Options)
write_term(+Term, +Options)
Writes Term on the standard output stream, subject to +Options.
A valid open Prolog stream, defaults to the current output stream.
A list of zero or more of the following,
where Boolean must be true or false (false is
the default).
quoted(Boolean)read/1. write_canonical/1,
writeq/1, and portray_clause/1 select this.
Any output produced by write_term/2 with the option
quoted(true) will be in Normal Form C, as defined by
Unicode. See ref-syn-syn-tok for further details.
ignore_ops(Boolean)write_canonical/1 and
display/1 select this.
portrayed(Boolean)user:portray/1 is called for each non-variable subterm.
print/1 selects this.
numbervars(Boolean)'$VAR'(N) where
N is an integer >= 0, an atom, or a code-list, are
treated specially (see numbervars/3). print/1,
write/1, writeq/1, and portray_clause/1 select
this.
cycles(Boolean)@/2 notation, as discussed above.
indented(Boolean)portray_clause/1 and listing/[0,1].
max_depth(Depth)quoted_charset(Charset)quoted(true) holds.
Charset should be a legal value of the quoted_charset Prolog
flag, where it takes its default value from. write_canonical/1
selects the value portable. See ref-lps-flg.
float_format(Spec)format/[2,3] character
sequences for printing floats. The default is `~H'.
priority(Prio)This predicate subsumes the predicates that output terms except
portray_clause/[1,2], which additionally prints a period and a
newline, and removes module prefixes that are redundant wrt. the
current type-in module.
During debugging, goals are written out by this predicate with options
given by the debugger_print_options Prolog flag.
Top-level variable bindings are written out by this predicate with options
given by the toplevel_print_options Prolog flag.
Stream errors (see ref-iou-sfh-est), plus:
instantiation_errortype_errordomain_errorHow certain options affect the output of write_term/2:
| ?- write_term('a b', [quoted(true)]).
'a b'
| ?- write_term(a+b, [ignore_ops(true)]).
+(a,b)
| ?- write_term(f('$VAR'(2)),
[numbervars(true)].)
f(C)
| ?- write_term(f('$VAR'('C')),
[numbervars(true)]).
f(C)
If your intention is to name variables such as that
generated by read_term/2 with the variable_names
option then this can be done by defining a predicate
like:
var_to_names([]) :- !.
var_to_names([=(Name,Var)|RestofPairs]) :-
( var(Var) ->
Var = '$VAR'(Name)
; true
),
var_to_names(RestofPairs).
| ?- read_term([variable_names(Names)], X),
var_to_names(Names),
write_term(X, [numbervars(true)]),
nl,
fail.
|: a(X, Y).
a(X, Y).
no
ref-iou-tou, user:portray/1.