/usr/local/lib/swipl/library/listing.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl -- Print debug messages and test assertions
      • apply.pl -- Apply predicates on a list
      • lists.pl -- List Manipulation
      • broadcast.pl -- Event service
      • shlib.pl
      • option.pl -- Option list processing
      • thread_pool.pl
      • gensym.pl -- Generate unique symbols
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl -- Examine Prolog source-files
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl -- Ordered set manipulation
      • random.pl -- Random numbers
      • base64.pl -- Base64 encoding and decoding
      • aggregate.pl -- Aggregation operators on backtrackable predicates
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl -- Process CSV (Comma-Separated Values) data
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl -- Operations on atoms
      • modules.pl -- Module utility predicates
      • occurs.pl
      • prolog_xref.pl -- Prolog cross-referencer data collection
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl
      • url.pl -- Analysing and constructing URL
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl
      • git.pl
      • rbtrees.pl -- Red black trees
      • dif.pl -- The dif/2 constraint
      • charsio.pl -- I/O on Lists of Character Codes
      • prolog_stack.pl -- Examine the Prolog stack
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl -- Manage Prolog break-points
      • wfs.pl
      • dialect.pl -- Support multiple Prolog dialects
      • prolog_code.pl -- Utilities for reasoning about code
      • sort.pl
      • iostream.pl -- Utilities to deal with streams
      • dicts.pl -- Dict utilities
      • varnumbers.pl -- Utilities for numbered terms
      • persistency.pl -- Provide persistent dynamic predicates
      • date.pl -- Process dates and times
      • base32.pl
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • heaps.pl
      • statistics.pl -- Get information about resource usage
      • terms.pl -- Term manipulation
      • utf8.pl
      • when.pl
      • backcomp.pl -- Backward compatibility
      • strings.pl
      • system.pl -- System utilities
      • quintus.pl -- Quintus compatibility
      • qsave.pl
      • zip.pl -- Access resource ZIP archives
      • check.pl -- Consistency checking
      • explain.pl
      • writef.pl
      • optparse.pl -- command line parsing
      • prolog_wrap.pl
      • macros.pl
      • threadutil.pl -- Interactive thread utilities
      • make.pl
      • prolog_profile.pl
      • files.pl
      • prolog_autoload.pl -- Autoload all dependencies
      • help.pl -- Text based manual
      • ctypes.pl -- Character code classification
      • ansi_term.pl
      • nb_set.pl
      • listing.pl -- List programs and pretty print clauses
        • listing/0
        • listing/1
        • listing/2
        • portray_clause/1
        • portray_clause/2
        • portray_clause/3
      • fastrw.pl
      • prolog_trace.pl -- Print access to predicates
      • edit.pl -- Editor interface
      • prolog_jiti.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • portray_text.pl
      • prolog_history.pl
      • thread.pl
      • shell.pl -- Elementary shell commands
      • intercept.pl -- Intercept and signal interface
      • tables.pl
      • rwlocks.pl -- Read/write locks
      • prolog_versions.pl
      • prolog_coverage.pl -- Coverage analysis tool
      • increval.pl -- Incremental dynamic predicate modification
      • prolog_debug.pl
      • streams.pl -- Manage Prolog streams
      • oset.pl -- Ordered set manipulation
      • exceptions.pl
      • prolog_codewalk.pl
      • hashtable.pl
 listing(:What) is det
 listing(:What, +Options) is det
List matching clauses. What is either a plain specification or a list of specifications. Plain specifications are:
  • Predicate indicator (Name/Arity or Name//Arity) Lists the indicated predicate. This also outputs relevant declarations, such as multifile/1 or dynamic/1.
  • A Head term. In this case, only clauses whose head unify with Head are listed. This is illustrated in the query below that only lists the first clause of append/3.
    ?- listing(append([], _, _)).
    lists:append([], L, L).
  • A clause reference as obtained for example from nth_clause/3.

The following options are defined:

variable_names(+How)
One of source (default) or generated. If source, for each clause that is associated to a source location the system tries to restore the original variable names. This may fail if macro expansion is not reversible or the term cannot be read due to different operator declarations. In that case variable names are generated.
source(+Bool)
If true (default false), extract the lines from the source files that produced the clauses, i.e., list the original source text rather than the decompiled clauses. Each set of contiguous clauses is preceded by a comment that indicates the file and line of origin. Clauses that cannot be related to source code are decompiled where the comment indicates the decompiled state. This is notably practical for collecting the state of multifile predicates. For example:
?- listing(file_search_path, [source(true)]).