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.
variable_names(Names) since release 4.3=Var
pairs, where each Name is an atom indicating the
name to be used if Var is a variable occurring in the written term.
This argument has the same form as the corresponding read_term/[2,3] option
and provides a convenient and safe way to preserve variable names
when writing a previously read term.
numbervars(Boolean)'$VAR'(N) where
N is an integer >= 0
are
treated specially (see numbervars/3). print/1,
write/1, writeq/1, and portray_clause/1 select
this.
legacy_numbervars(Boolean) since release 4.3'$VAR'(N) where
N is an integer >= 0, an atom, or a code-list,
are treated specially,
in a way consistent with versions prior to release 4.3,
as follows.
If N is an integer >= 0, the behavior is as for the numbervars/1 option.
Otherwise the characters of the atom or code-list are written instead of the term.
The preferred way to specify variable names is with the variable_names/1 option.
cycles(Boolean)@/2 notation, as discussed for read_term/[2,3] (see mpg-ref-read_term).
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(A+B,
[variable_names(['Hello'=A, 'World'=B])]).
Hello+World
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
simply passing on the variable_names option to write_term/2
| ?- read_term(T, [variable_names(Names)]),
write_term(T, [variable_names(Names),quoted(true)]),
nl,
fail.
|: a(X, Y).
a(X, Y)
no
ref-iou-tou, ref-lps-flg, user:portray/1.