A simple pretty-printer for Ciao programs

Author(s): The Ciao Development Team.

This library module writes out to standard output a clause or a list of clauses.

Usage and interface

Documentation on exports

Usage:pretty_print(Cls,Flags)

Prints each clause in the list Cls after numbering its variables.

Usage:pretty_print(Cls,Flags,Ds)

Prints each clause in the list Cls after using the corresponding variable names dictionary in Ds to name its variables.

No further documentation available for this predicate.

Documentation on internals

REGTYPEclauses/1
A regular type, defined as follows:
clauses([]).
clauses([_1|_2]) :-
        clause(_1),
        clauses(_2).
clauses(_1) :-
        clause(_1).

REGTYPEclause/1
A regular type, defined as follows:
clause(_1) :-
        clterm(_1).
clause((_1,_2)) :-
        clterm(_1),
        term(_2).

REGTYPEclterm/1
A regular type, defined as follows:
clterm(clause(_1,_2)) :-
        callable(_1),
        body(_2).
clterm(directive(_1)) :-
        body(_1).
clterm((_1:-_2)) :-
        callable(_1),
        body(_2).
clterm(_1) :-
        callable(_1).

REGTYPEbody/1
A well formed body, including cge expressions and &-concurrent expressions. The atomic goals may or may not have a key in the form ^(goal:any), and may or may not be module qualified, but if they are it has to be in the form ^(^(moddesc:goal):any).

Usage:body(X)

X is a printable body.

    REGTYPEflag/1
    A keyword ask/1 flags whether to output asks or whens and nl/1 whether to separate clauses with a blank line or not.

    Usage:flag(X)

    X is a flag for the pretty-printer.

      Documentation on imports

      This module has the following direct dependencies:

      Known bugs and planned improvements

      • 2.- If the priority of and operator, &/1 or &/2, is redefined with lower priority than :-/2 or ./1, the written term is incorrect because it does not include parenthesis to make Ciao associate and operator first.