From: Markus Triska Date: Sat, 13 Jun 2020 14:45:47 +0000 (+0200) Subject: ADDED: portray_clause/2, writing to a specified stream. X-Git-Tag: v0.8.127~35^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=44ebd894d5b82a2c6747f89eaf9aaa411417230d;p=scryer-prolog.git ADDED: portray_clause/2, writing to a specified stream. --- diff --git a/README.md b/README.md index f60ee75a..f05c0640 100644 --- a/README.md +++ b/README.md @@ -396,7 +396,7 @@ The modules that ship with Scryer Prolog are also called * [`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. diff --git a/src/lib/format.pl b/src/lib/format.pl index e8be4df3..2e496730 100644 --- a/src/lib/format.pl +++ b/src/lib/format.pl @@ -74,6 +74,7 @@ format/2, format/3, portray_clause/1, + portray_clause/2, listing/1 ]). @@ -465,8 +466,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 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),