* [`format`](src/lib/format.pl)
The nonterminal `format_//2` is used to describe formatted output,
arranging arguments according to a given format string.
- The predicates `format/[2,3]`, `portray_clause/1` and `listing/1`
+ The predicates `format/[2,3]`, `portray_clause/[1,2]` and `listing/1`
provide formatted *impure* output.
* [`assoc`](src/lib/assoc.pl)
providing `empty_assoc/1`, `get_assoc/3`, `put_assoc/4` etc.
format/2,
format/3,
portray_clause/1,
+ portray_clause/2,
listing/1
]).
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
portray_clause(Term) :-
+ current_output(Out),
+ portray_clause(Out, Term).
+
+portray_clause(Stream, Term) :-
phrase(portray_clause_(Term), Ls),
- maplist(write, Ls).
+ maplist(put_char(Stream), Ls).
portray_clause_(Term) -->
{ term_variables(Term, Vs),