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.
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_error
type_error
domain_error
How 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
.