[ Term I/O | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]
write_canonical(+Stream, ?Term)
The term Term is written on the output stream Stream in a form that ignores
operator declarations and can be read in.
- +Stream
- Integer (stream number) or Atom (reserved or user-defined symbolic stream name).
- ?Term
- Prolog term.
Description
Used to write the term Term in a form that can be read back independent
of the current operator declarations. Atoms and strings are quoted,
operator declarations are ignored, lists are printed as ./2 structures,
the (stream-specific or global) print_depth flag is not taken into account,
metaterm attributes are printed, and variables are printed with unique
identifiers.
write_canonical(S, Term) is equivalent to printf(S, "%MOQ.vDw", Term).
Note that as usual, the output is buffered, so it may need to be flushed
either by closing the stream, by writing again or by using flush/1.
Fail Conditions
None.
Resatisfiable
No.
Exceptions
- (4) instantiation fault
- Stream is not instantiated.
- (5) type error
- Stream is not an atom or an integer.
- (192) illegal stream mode
- Stream is not an output stream.
- (193) illegal stream specification
- Stream is an illegal stream specification.
Examples
Success:
[eclipse 1]: write_canonical(output, 'A'+[a,B]).
+('A', .(a, .(_216, [])))
B = B
yes.
Error:
write_canonical(S, a(b,c)). (Error 4).
write_canonical("string", a(b,c)). (Error 5).
write_canonical(input, X + 2). (Error 192).
write_canonical(atom, X + 2). (Error 193).
See Also
write / 1, write / 2, writeq / 1, writeq / 2, write_canonical / 1