write_canonical(?term) [ISO]

This built-in predicate outputs a term to the current output stream. The output stream must be a text stream that was opened for writing or appending data. The data is written in a form defined by the write-options list [numbervars(false), quoted(true), ignore_ops(true)].

The Prolog flags print_double_quotes and expand_backslash may affect write_canonical/1.

see also: char_conversion/2 current_char_conversion/2 current_op/3 op/3 read/1 read/2 read_term/2 read_term/3 write/1 write/2 write_canonical/2 write_list/1 write_list/2 write_list_goal/2 write_list_goal/3 write_term/2 write_term/3 writeq/1 writeq/2

Example
write_canonical(X=a). succeeds with empty substitution and the following data was written to the current output stream: =(X, a)
write_canonical('$VAR'(51)). assume the current output stream has contents: =(X, a)
and the current output stream is left as:
=(X, a)'$VAR'(51)
write_canonical([1,2,3]). assume the current output stream has contents: =(X, a)
and the current output stream is left as:
=(X, a).(1, .(2, .(3, [])))

 

Exceptions  
the current output stream OS is associated with a binary stream a permission_error(output, binary_stream, OS) is thrown and OS is substituted by the binary stream

 

 

info@trinc-prolog.com