Merge pull request #381 from triska/master
ADDED: library(format) now provides a rudimentary version of listing/1
This commit is contained in:
@@ -64,7 +64,8 @@
|
|||||||
|
|
||||||
:- module(format, [format_//2,
|
:- module(format, [format_//2,
|
||||||
format/2,
|
format/2,
|
||||||
portray_clause/1
|
portray_clause/1,
|
||||||
|
listing/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(library(dcgs)).
|
:- use_module(library(dcgs)).
|
||||||
@@ -379,11 +380,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|||||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||||
|
|
||||||
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
We also provide a rudimentary version of portray_clause/1.
|
We also provide rudimentary versions of portray_clause/1 and listing/1.
|
||||||
|
|
||||||
In the eventual library organization, portray_clause/1
|
In the eventual library organization, portray_clause/1 and
|
||||||
and related predicates (such as listing/1) may be placed
|
related predicates may be placed in their own dedicated library.
|
||||||
in their own dedicated library.
|
|
||||||
|
|
||||||
portray_clause/1 is useful for printing solutions in such a way
|
portray_clause/1 is useful for printing solutions in such a way
|
||||||
that they can be read back with read/1.
|
that they can be read back with read/1.
|
||||||
@@ -491,3 +491,22 @@ a :-
|
|||||||
?- portray_clause((A :- B)).
|
?- portray_clause((A :- B)).
|
||||||
|
|
||||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||||
|
|
||||||
|
listing(PI) :-
|
||||||
|
nonvar(PI),
|
||||||
|
( PI = Name/Arity0 ->
|
||||||
|
Arity = Arity0
|
||||||
|
; PI = Name//Arity0 ->
|
||||||
|
Arity is Arity0 + 2
|
||||||
|
; throw(error(type_error(predicate_indicator, PI), listing/1))
|
||||||
|
),
|
||||||
|
functor(Head, Name, Arity),
|
||||||
|
\+ \+ clause(Head, Body), % only true if there is at least one clause
|
||||||
|
( clause(Head, Body),
|
||||||
|
( Body == true ->
|
||||||
|
portray_clause(Head)
|
||||||
|
; portray_clause((Head :- Body))
|
||||||
|
),
|
||||||
|
false
|
||||||
|
; true
|
||||||
|
).
|
||||||
|
|||||||
Reference in New Issue
Block a user