From 44ebd894d5b82a2c6747f89eaf9aaa411417230d Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sat, 13 Jun 2020 16:45:47 +0200 Subject: [PATCH] ADDED: portray_clause/2, writing to a specified stream. --- README.md | 2 +- src/lib/format.pl | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) 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), -- 2.54.0