This section describes the basic term reading and writing predicates. The predicates format/[1,2] and writef/2 provide formatted output. Writing to Prolog data structures such as atoms or code-lists is supported by with_output_to/2 and format/3.
Reading is sensitive to the Prolog flag character_escapes,
which controls the interpretation of the
character in quoted atoms and strings.
\
ignore
(ignore the attribute), dots
(write the attributes as {...}
), write
(simply
hand the attributes recursively to write_term/2)
and portray
(hand the attributes to attr_portray_hook/2).true
, write a string object (see section
4.23) as
`
...`
. The default depends on the Prolog flag
backquoted_string.portray
,
portray/1
is called for each blob encountered. See section
9.4.7.true
and quoted(true)
is active, special
characters in quoted atoms and strings are emitted as ISO escape
sequences. Default is taken from the reference module (see below).true
(default), cyclic terms are written as
@(Template, Substitutions)
, where Substitutions
is a list
Var = Value. If cycles
is false
,
max_depth
is not given, and Term is cyclic, write_term/2
raises a domain_error
.64The
cycles option and the cyclic term representation using the @-term are
copied from SICStus Prolog. However, the default in SICStus is set to false
and SICStus writes an infinite term if not protected by, e.g., the depth_limit
option. See also the cycles
option in
read_term/2.true
, the generic term representation (<functor>(<args>
... )) will be used for all terms. Otherwise (default), operators, list
notation and {}
/1 will be written using their special
syntax.?- write_term(a(s(s(s(s(0)))), [a,b,c,d,e,f]), [max_depth(3)]). a(s(s(...)), [a, b|...]) true.
Used by the top-level and debugger to limit screen output. See also the Prolog flags toplevel_print_options and debugger_print_options.
user
). This defines
the default value for the character_escapes
option as well as the operator definitions to use. See also op/3.true
, terms of the format $VAR(N)
, where <N>
is a positive integer, will be written as a variable name. If N
is an atom it is written without quotes. This extension allows for
writing variables with user-provided names. The default is
false
. See also numbervars/3.true
(default false
), do not reset the
logic that inserts extra spaces that separate tokens where needed. This
is intended to solve the problems with the code below. Calling write_value(.
)
writes ..
, which cannot be read. By adding partial(true)
to the option list, it correctly emits . .
. Similar
problems appear when emitting operators using multiple calls to write_term/3.
write_value(Value) :- write_term(Value, [partial(true)]), write('.'), nl.
true
, the hook portray/1
is called before printing a term that is not a variable. If portray/1
succeeds, the term is considered printed. See also print/1.
The default is false
. This option is an extension to the
ISO write_term options.portray(true)
, but calls Goal rather
than the predefined hook portray/1. Goal
is called through call/3,
where the first argument is Goal, the second is the term to
be printed and the 3rd argument is the current write option list. The
write option list is copied from the write_term call, but the list is
guaranteed to hold an option priority
that reflects the
current priority.format('~w = ', [VarName]), write_term(Value, [quoted(true), priority(699)])
true
, atoms and functors that need quotes will be
quoted. The default is false
.standard
, adding only space
where needed for proper tokenization by read_term/3.
Currently, the only other value is next_argument
, adding a
space after a comma used to separate arguments in a term or list.
ignore_ops
,
quoted
and numbervars
after numbervars/4
using the
singletons
option.
Note that due to the use of numbervars/4,
non-ground terms must be written using a single write_canonical/1
call. This used to be the case anyhow, as garbage collection between
multiple calls to one of the write predicates can change the _G
<NNN>
identity of the variables.
library(portray_text)
.end_of_file
.dec10
(report and restart).
true
(default), call
prolog:comment_hook(Comments, TermPos, Term)
if this
multifile hook is defined (see prolog:comment_hook/3). This is used to
drive PlDoc.
The singletons
option of read_term/3
is initialised from the active style-checking mode. The module
option is initialised to the current compilation module (see prolog_load_context/2).
true
, read `
...`
to a string
object (see
section 4.23). The default
depends on the Prolog flag
backquoted_string.\
escape sequences in quoted atoms. See
the Prolog flag character_escapes
in current_prolog_flag/2.
(SWI-Prolog).true
(default false
), re-instantiate
templates as produced by the corresponding write_term/2
option. Note that the default is false
to avoid
misinterpretation of @(Template, Substutions)
, while the
default of write_term/2
is true
because emitting cyclic terms without using the
template construct produces an infinitely large term (read: it will
generate an error after producing a huge amount of output).variable_names
, but only reports the variables occurring
only once in the Term read. Variables starting with an
underscore (`_
') are not included in this list. (ISO). If Vars
is the constant warning
, singleton variables are reported
using
print_message/2.error
(default), throw an exception on a syntax error.
Other values are fail
, which causes a message to be printed
using
print_message/2,
after which the predicate fails, quiet
which causes the
predicate to fail silently, and dec10
which causes syntax
errors to be printed, after which read_term/[2,3]
continues reading the next term. Using dec10
, read_term/[2,3]
never fails. (Quintus, SICStus)."
).
{...}
, as used in DCG rules. Arg
describes the argument.
|
<TailTerm>, Tail
is unified with the term position of the tail, otherwise with the atom none
.
variable_names
, but allows for history
substitutions. read_history/6
is used by the top-level to read the user's actions. Show is
the command the user should type to show the saved events. Help
is the command to get an overview of the capabilities. Special
is a list of commands that are not saved in the history. Prompt
is the first prompt given. Continuation prompts for more lines are
determined by prompt/2.
A
%w
in the prompt is substituted by the event number. See
section 2.7 for available
substitutions.
SWI-Prolog calls read_history/6 as follows:
read_history(h, '!h', [trace], '%w ?- ', Goal, Bindings)