Format is an atom, list of ASCII values, or a Prolog string.
Arguments provides the arguments required by the format
specification. If only one argument is required and this is not a list
of ASCII values the argument need not be put in a list. Otherwise the
arguments are put in a list.
Special sequences start with the tilde (~
),
followed by an optional numeric argument, followed by a character
describing the action to be undertaken. A numeric argument is either a
sequence of digits, representing a positive decimal number, a sequence `<character>
,
representing the ASCII value of the character (only useful for
~t
) or a asterisk (*
), in when
the numeric argument is taken from the next argument of the argument
list, which should be a positive integer. Actions are:
~
-
Output the tilde itself.
a
-
Output the next argument, which should be an atom. This option is
equivalent to w. Compatibility reasons only.
c
-
Output the next argument as an ASCII value. This argument should be an
integer in the range [0, ... , 255] (including 0 and 255).
d
-
Output next argument as a decimal number. It should be an integer. If a
numeric argument is specified a dot is inserted argument
positions from the right (useful for doing fixed point arithmetic with
integers, such as handling amounts of money).
D
-
Same as d, but makes large values easier to read by inserting a
comma every three digits left to the dot or right.
e
-
Output next argument as a floating point number in exponential notation.
The numeric argument specifies the precision. Default is 6 digits. Exact
representation depends on the C library function printf(). This function
is invoked with the format
%.<precision>e.
E
-
Equivalent to e, but outputs a capital E to indicate the
exponent.
f
-
Floating point in non-exponential notation. See C library function
printf().
g
-
Floating point in e or f notation, whichever is shorter.
G
-
Floating point in E or f notation, whichever is shorter.
i
-
Ignore next argument of the argument list. Produces no output.
k
-
Give the next argument to displayq/1
(canonical write).
n
-
Output a newline character.
N
-
Only output a newline if the last character output on this stream was
not a newline. Not properly implemented yet.
p
-
Give the next argument to print/1.
q
-
Give the next argument to writeq/1.
r
-
Print integer in radix the numeric argument notation. Thus
~16r
prints its argument hexadecimal. The argument should
be in the range [2, ... , 36]. Lower case letters are used
for digits above 9.
R
-
Same as r, but uses upper case letters for digits above 9.
s
-
Output a string of ASCII characters from the next argument.
t
-
All remaining space between 2 tabs tops is distributed equally over
~t
statements between the tabs tops. This space is padded
with spaces by default. If an argument is supplied this is taken to be
the ASCII value of the character used for padding. This can be used to
do left or right alignment, centering, distributing, etc. See also
~|
and ~+
to set tab stops. A tabs top is
assumed at the start of each line.
|
-
Set a tabs top on the current position. If an argument is supplied set a
tabs top on the position of that argument. This will cause all
~t
's to be distributed between the previous and this tabs
top.
+
-
Set a tabs top relative to the current position. Further the same as
~|
.
w
-
Give the next argument to write/1.
Example:
simple_statistics :-
% left to the user
format('~tStatistics~t~72|~n~n'),
format('Runtime: ~`.t ~2f~34| Inferences: ~`.t ~D~72|~n',
[RunT, Inf]),
....
Will output
Statistics
Runtime: .................. 3.45 Inferences: .......... 60,345