The trivia Reference Manual

This is the trivia Reference Manual, version 0.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Wed May 15 07:09:20 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 trivia

NON-optimized pattern matcher compatible with OPTIMA, with extensible optimizer interface and clean codebase

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependency

trivia.balland2006 (system).

Source

trivia.asd.


2.2 trivia.balland2006

Optimizer for Trivia based on (Balland 2006)

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependencies
  • trivia.trivial (system).
  • type-i (system).
  • iterate (system).
  • alexandria (system).
Source

trivia.balland2006.asd.

Child Components

2.3 trivia.trivial

Base level system of Trivia with a trivial optimizer.
Systems that intend to enhance Trivia should depend on this package, not the TRIVIA system, in order to avoid the circular dependency.

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependency

trivia.level2 (system).

Source

trivia.trivial.asd.


2.4 trivia.level2

NON-optimized pattern matcher compatible with OPTIMA, with extensible optimizer interface and clean codebase

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependencies
  • trivia.level1 (system).
  • lisp-namespace (system).
  • closer-mop (system).
  • trivial-cltl2 (system).
Source

trivia.level2.asd.

Child Components

2.5 trivia.level1

Core patterns of Trivia

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependency

trivia.level0 (system).

Source

trivia.level1.asd.

Child Components

2.6 trivia.level0

Bootstrapping Pattern Matching Library for implementing Trivia

Author

Masataro Asai

Contact

License

LLGPL

Version

0.1

Dependency

alexandria (system).

Source

trivia.level0.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 trivia/trivia.asd

Source

trivia.asd.

Parent Component

trivia (system).

ASDF Systems

trivia.


3.1.2 trivia.balland2006/trivia.balland2006.asd

Source

trivia.balland2006.asd.

Parent Component

trivia.balland2006 (system).

ASDF Systems

trivia.balland2006.


3.1.3 trivia.trivial/trivia.trivial.asd

Source

trivia.trivial.asd.

Parent Component

trivia.trivial (system).

ASDF Systems

trivia.trivial.


3.1.4 trivia.level2/trivia.level2.asd

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

ASDF Systems

trivia.level2.


3.1.5 trivia.level1/trivia.level1.asd

Source

trivia.level1.asd.

Parent Component

trivia.level1 (system).

ASDF Systems

trivia.level1.


3.1.6 trivia.level0/trivia.level0.asd

Source

trivia.level0.asd.

Parent Component

trivia.level0 (system).

ASDF Systems

trivia.level0.


3.1.7 trivia.balland2006/package.lisp

Source

trivia.balland2006.asd.

Parent Component

trivia.balland2006 (system).

Packages

trivia.balland2006.


3.1.8 trivia.balland2006/optimizer.lisp

Dependency

package.lisp (file).

Source

trivia.balland2006.asd.

Parent Component

trivia.balland2006 (system).

Public Interface
Internals

3.1.9 trivia.balland2006/column-swapping.lisp

Dependency

optimizer.lisp (file).

Source

trivia.balland2006.asd.

Parent Component

trivia.balland2006 (system).

Public Interface
Internals

find-tree (function).


3.1.10 trivia.level2/package.lisp

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Packages

3.1.11 trivia.level2/impl.lisp

Dependency

package.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Public Interface
Internals

3.1.12 trivia.level2/sugars.lisp

Dependency

impl.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Public Interface
Internals

3.1.13 trivia.level2/derived.lisp

Dependency

sugars.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Internals

3.1.14 trivia.level2/derived-class.lisp

Dependency

derived.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Public Interface
Internals

3.1.15 trivia.level2/derived2.lisp

Dependency

derived-class.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).


3.1.16 trivia.level2/derived3.lisp

Dependency

derived2.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Internals

3.1.17 trivia.level2/derived-numbers.lisp

Dependency

derived3.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).


3.1.18 trivia.level2/arrays.lisp

Dependency

derived-numbers.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).

Internals

3.1.19 trivia.level2/inline-pattern.lisp

Dependency

arrays.lisp (file).

Source

trivia.level2.asd.

Parent Component

trivia.level2 (system).


3.1.20 trivia.level1/package.lisp

Source

trivia.level1.asd.

Parent Component

trivia.level1 (system).

Packages

3.1.21 trivia.level1/impl.lisp

Dependency

package.lisp (file).

Source

trivia.level1.asd.

Parent Component

trivia.level1 (system).

Public Interface
Internals

3.1.22 trivia.level0/package.lisp

Source

trivia.level0.asd.

Parent Component

trivia.level0 (system).

Packages

trivia.level0.

Internals

once-only (macro).


3.1.23 trivia.level0/impl.lisp

Dependency

package.lisp (file).

Source

trivia.level0.asd.

Parent Component

trivia.level0 (system).

Public Interface
Internals

4 Packages

Packages are listed by definition order.


4.1 trivia.level2.impl

Source

package.lisp.

Use List
Public Interface
Internals

4.2 trivia.level2

Source

package.lisp.

Nickname

trivia

Use List

trivia.level1.

Used By List
Public Interface

4.3 trivia.balland2006

Source

package.lisp.

Use List
Public Interface
Internals

4.4 trivia.skip

Source

package.lisp.

Used By List
Public Interface

skip (macro).


4.5 trivia.next

Source

package.lisp.

Used By List
Public Interface

next (macro).


4.6 trivia.level0

Source

package.lisp.

Use List

common-lisp.

Used By List
Public Interface
Internals

4.7 trivia.fail

Source

package.lisp.

Used By List

trivia.level1.impl.

Public Interface

fail (macro).


4.8 trivia.level1.impl

Source

package.lisp.

Use List
Internals

4.9 trivia.level1

Source

package.lisp.

Used By List
Public Interface

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Special variables

Special Variable: *arity-check-by-test-call*

If enabled (non-nil), UNARY-FUNCTION-P tests the arity of the candidate accessor function by FUNCALLing it with *TEST-CALL-ARGUMENT* (see the docstring of *TEST-CALL-ARGUMENT*).

PROGRAM-ERROR is treated as a reason of rejection; A function of arity != 1.
Other errors, as well as completion of the call without errors, are treated as a success.

Package

trivia.level2.

Source

derived-class.lisp.

Special Variable: *lexvars*

List of symbol-and-options in the current parsing context.

Package

trivia.level1.

Source

impl.lisp.

Special Variable: *optimization-timeout*

Optimization timeout in seconds. It matters for a very complex pattern

Package

trivia.balland2006.

Source

optimizer.lisp.

Special Variable: *optimizer*
Package

trivia.level2.

Source

impl.lisp.

Special Variable: *or-pattern-allow-unshared-variables*
Package

trivia.level1.

Source

impl.lisp.

Special Variable: *test-call-argument*

An argument used to call the candidate function in UNARY-FUNCTION-P. See *ARITY-CHECK-BY-TEST-CALL* for details.

Package

trivia.level2.

Source

derived-class.lisp.

Special Variable: *trace-dispatching*

Used only for debugging. When non-nil, test-form for pattern matching is printed on the stream.

Package

trivia.level1.

Source

impl.lisp.

Special Variable: *trace-optimization*

if non-nil, prints the debug information

Package

trivia.balland2006.

Source

optimizer.lisp.


5.1.2 Macros

Macro: cmatch (what &body clauses)

Syntax:
[e|c]?match argument &body {clause}* -> result

- argument : a form, evaluated.
- clause : ( pattern &body {bodyform}* )
- pattern : a pattern language.
- bodyform : an implicit progn.

Matches argument against the patterns provided in clauses. Evaluate the bodyform
of the first clause whose pattern matches against argument. bodyform is treated
as an implicit progn.

- In MATCH, if no clauses have matched the given argument, returns nil.
- In EMATCH, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: cmatch* (whats &body clauses)

Syntax:
[e|c]?match* (&rest arguments) &body {multiclause}* -> result

- arguments : a list of forms, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Arguments are evaluated in left-to-right manner, and the patterns are matched
against the results of evaluation of arguments in left-to-right manner. Evaluate
the bodyform of the first clause whose patterns match successfully.

When the number of patterns in a clause is insufficient, it is padded with
wildcard patterns, i.e., no check is conducted. In contrast, excessive number of
patterns will signal a compile-time error.

- In MATCH*, if no clauses have matched the given argument, returns nil.
- In EMATCH*, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH*, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: defoptimizer (name args &body body)
Package

trivia.level2.

Source

impl.lisp.

Macro: defpattern (name args &body body)

Adds a new derived pattern.
The default value of &optional arguments are ’_, instead of nil.

Package

trivia.level2.

Source

impl.lisp.

Macro: defpattern-inline (name args &body body)

Adds a new inlined derived pattern. These patterns are evaluated from the innermost ones. The default value of &optional arguments are ’_, instead of nil.

Package

trivia.level2.

Source

impl.lisp.

Macro: defun-cmatch (name (arg) &body body)

Equivalent to (defun (arg) [decl-and-docstring] (cmatch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: defun-cmatch* (name args &body body)

Equivalent to (defun (arg) [decl-and-docstring] (cmatch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: defun-ematch (name (arg) &body body)

Equivalent to (defun (arg) [decl-and-docstring] (ematch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: defun-ematch* (name args &body body)

Equivalent to (defun (arg) [decl-and-docstring] (ematch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: defun-match (name (arg) &body body)

Equivalent to (defun (arg) [decl-and-docstring] (match arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: defun-match* (name args &body body)

Equivalent to (defun (arg) [decl-and-docstring] (match arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: ematch (what &body clauses)

Syntax:
[e|c]?match argument &body {clause}* -> result

- argument : a form, evaluated.
- clause : ( pattern &body {bodyform}* )
- pattern : a pattern language.
- bodyform : an implicit progn.

Matches argument against the patterns provided in clauses. Evaluate the bodyform
of the first clause whose pattern matches against argument. bodyform is treated
as an implicit progn.

- In MATCH, if no clauses have matched the given argument, returns nil.
- In EMATCH, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: ematch* (whats &body clauses)

Syntax:
[e|c]?match* (&rest arguments) &body {multiclause}* -> result

- arguments : a list of forms, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Arguments are evaluated in left-to-right manner, and the patterns are matched
against the results of evaluation of arguments in left-to-right manner. Evaluate
the bodyform of the first clause whose patterns match successfully.

When the number of patterns in a clause is insufficient, it is padded with
wildcard patterns, i.e., no check is conducted. In contrast, excessive number of
patterns will signal a compile-time error.

- In MATCH*, if no clauses have matched the given argument, returns nil.
- In EMATCH*, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH*, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: ematch0 (what &body clauses)
Package

trivia.level0.

Source

impl.lisp.

Macro: fail ()
Package

trivia.fail.

Source

impl.lisp.

Macro: if-match (pattern arg &body then)

Equivalent to (match ARG (PATTERN THEN) (_ ELSE)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: in-optimizer (name &optional verbose)
Package

trivia.level2.

Source

impl.lisp.

Macro: lambda-cmatch (&body body)

Equivalent to (lambda (arg) (cmatch arg BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-cmatch* (&body body)

Equivalent to (lambda (args...) (cmatch* (args...) BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-cmatch1 (pattern &body body)

Equivalent to (lambda (arg) (cmatch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-ematch (&body body)

Equivalent to (lambda (arg) (ematch arg BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-ematch* (&body body)

Equivalent to (lambda (args...) (ematch* (args...) BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-ematch0 (&body clauses)
Package

trivia.level0.

Source

impl.lisp.

Macro: lambda-ematch1 (pattern &body body)

Equivalent to (lambda (arg) (ematch arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-match (&body body)

Equivalent to (lambda (arg) (match arg BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-match* (&body body)

Equivalent to (lambda (args...) (match* (args...) BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: lambda-match0 (&body clauses)
Package

trivia.level0.

Source

impl.lisp.

Macro: lambda-match1 (pattern &body body)

Equivalent to (lambda (arg) (match arg (PATTERN BODY...))).

Package

trivia.level2.

Source

sugars.lisp.

Macro: let-match (bindings &body body)

Similar to LET, except not only a variable but also a pattern can be used in BINDINGS.

Package

trivia.level2.

Source

sugars.lisp.

Macro: let-match* (bindings &body body)

Similar to LET-MATCH but matches sequentially.

Package

trivia.level2.

Source

sugars.lisp.

Macro: let-match1 (pattern arg &body body)

Equivalent to (let-match ((PATTERN ARG)) BODY...).

Package

trivia.level2.

Source

sugars.lisp.

Macro: match (what &body clauses)

Syntax:
[e|c]?match argument &body {clause}* -> result

- argument : a form, evaluated.
- clause : ( pattern &body {bodyform}* )
- pattern : a pattern language.
- bodyform : an implicit progn.

Matches argument against the patterns provided in clauses. Evaluate the bodyform
of the first clause whose pattern matches against argument. bodyform is treated
as an implicit progn.

- In MATCH, if no clauses have matched the given argument, returns nil.
- In EMATCH, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: match* (whats &body clauses)

Syntax:
[e|c]?match* (&rest arguments) &body {multiclause}* -> result

- arguments : a list of forms, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Arguments are evaluated in left-to-right manner, and the patterns are matched
against the results of evaluation of arguments in left-to-right manner. Evaluate
the bodyform of the first clause whose patterns match successfully.

When the number of patterns in a clause is insufficient, it is padded with
wildcard patterns, i.e., no check is conducted. In contrast, excessive number of
patterns will signal a compile-time error.

- In MATCH*, if no clauses have matched the given argument, returns nil.
- In EMATCH*, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In CMATCH*, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: match0 (*what* &body clauses)
Package

trivia.level0.

Source

impl.lisp.

Macro: match1 (what &body clauses)
Package

trivia.level1.

Source

impl.lisp.

Macro: match2 (what &body clauses)

In match2/match2*, the last clause is not enclosed in a block.
Therefore, using ‘next’ in the last clause results in jumping to the next innermost matching construct, or results in a compilation error when this is the outermost matching construct.

Package

trivia.level2.

Source

impl.lisp.

Macro: match2* (whats &body clauses)

In match2/match2*, the last clause is not enclosed in a block.
Therefore, using ‘next’ in the last clause results in jumping to the next innermost matching construct, or results in a compilation error when this is the outermost matching construct.

Package

trivia.level2.

Source

impl.lisp.

Macro: match2*+ ((&rest whats) (&rest types) &body clauses)

Variant of match2* : can specify the inferred types of each argument

Package

trivia.level2.

Source

impl.lisp.

Macro: match2+ (what type &body clauses)

Variant of match2 : can specify the inferred type of the argument

Package

trivia.level2.

Source

impl.lisp.

Macro: multiple-value-cmatch (values-form &body clauses)

Syntax:
multiple-value-[e|c]?match values-form &body {multiclause}* -> result

- values-form : a form producing multiple values, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Similar to match*, but this is for multiple values. values-form is evaluated, and
each of the returned values are matched against the patterns provided
in multiclauses in left-to-right manner.
Evaluate the bodyform of the first clause whose patterns match successfully.

When the form returned more values than the number of patterns, excessive values are ignored.
When the form returned less values than the number of patterns, excessive patterns are matched against nil.

- In multiple-value-match, if no clauses have matched the given argument, returns nil.
- In multiple-value-ematch, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In multiple-value-cmatch, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: multiple-value-ematch (values-form &body clauses)

Syntax:
multiple-value-[e|c]?match values-form &body {multiclause}* -> result

- values-form : a form producing multiple values, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Similar to match*, but this is for multiple values. values-form is evaluated, and
each of the returned values are matched against the patterns provided
in multiclauses in left-to-right manner.
Evaluate the bodyform of the first clause whose patterns match successfully.

When the form returned more values than the number of patterns, excessive values are ignored.
When the form returned less values than the number of patterns, excessive patterns are matched against nil.

- In multiple-value-match, if no clauses have matched the given argument, returns nil.
- In multiple-value-ematch, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In multiple-value-cmatch, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: multiple-value-match (values-form &body clauses)

Syntax:
multiple-value-[e|c]?match values-form &body {multiclause}* -> result

- values-form : a form producing multiple values, evaluated.
- multiclause : ((&rest patterns) &body {bodyform}* )
- patterns : a list of pattern languages.
- bodyform : an implicit progn.

Similar to match*, but this is for multiple values. values-form is evaluated, and
each of the returned values are matched against the patterns provided
in multiclauses in left-to-right manner.
Evaluate the bodyform of the first clause whose patterns match successfully.

When the form returned more values than the number of patterns, excessive values are ignored.
When the form returned less values than the number of patterns, excessive patterns are matched against nil.

- In multiple-value-match, if no clauses have matched the given argument, returns nil.
- In multiple-value-ematch, if no clauses have matched the given argument, ematch signals an error MATCH-ERROR. - In multiple-value-cmatch, if no clauses have matched the given argument, cmatch signals a correctable MATCH-ERROR.

Package

trivia.level2.

Source

sugars.lisp.

Macro: next ()
Package

trivia.next.

Source

impl.lisp.

Macro: skip ()
Package

trivia.skip.

Source

impl.lisp.

Macro: trace-when (condition &rest body)

Evaluate and print the result of the form when *trace-dispatching* is non-nil.

Package

trivia.level1.

Source

impl.lisp.

Macro: unless-match (pattern arg &body body)

Equivalent to (match ARG (PATTERN) (_ BODY...)).

Package

trivia.level2.

Source

sugars.lisp.

Macro: when-match (pattern arg &body body)

Equivalent to (match ARG (PATTERN BODY...)).

Package

trivia.level2.

Source

sugars.lisp.


5.1.3 Ordinary functions

Function: apply-fusion (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: apply-interleaving (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: apply-swapping (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: correct-pattern (pattern)
Package

trivia.level1.

Source

impl.lisp.

Function: fuse (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: fusiblep (c1 c2 &optional under)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: generate-multi-matcher (args *lexvars* clauses &optional in-clause-block)
Package

trivia.level2.

Source

impl.lisp.

Function: inline-pattern-expand (p)

Given a pattern p, returns a list of patterns that should be inlined.

Package

trivia.level2.

Source

impl.lisp.

Function: interleave (c1 c2 types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: pattern-dependencies (patterns)
Package

trivia.balland2006.

Source

column-swapping.lisp.

Function: pattern-dependent (p1 p2)

return true if p2 depends on p1

Package

trivia.balland2006.

Source

column-swapping.lisp.

Function: pattern-expand (p)

expand the given pattern downto level1 pattern (i.e. until no expansion is available), just like macroexpand

Package

trivia.level2.

Source

impl.lisp.

Function: pattern-expand-1 (p)

expand the given pattern once, just like macroexpand-1. Returns (values expansion-form expanded-p)

Package

trivia.level2.

Source

impl.lisp.

Function: pattern-expand-all (p)

expand the given pattern recursively

Package

trivia.level2.

Source

impl.lisp.

Function: predicate-p (type)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: predicatep (type)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: preprocess-symopts (symopt? pattern)

Ensure the symopts being a list, plus sets some default values.

Package

trivia.level1.

Source

impl.lisp.

Function: swappable (c1 c2 &optional under)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: symbol-optimizer (symbol &optional default)

Automatically defined getter function. When DEFAULT is supplied, the value is set automatically.

Package

trivia.level2.

Source

impl.lisp.

Function: (setf symbol-optimizer) (symbol)

Automatically defined setter function.

Package

trivia.level2.

Source

impl.lisp.

Function: variables (pattern &optional *lexvars*)
Package

trivia.level1.

Source

impl.lisp.


5.1.4 Generic functions

Generic Reader: conflicts (condition)
Generic Writer: (setf conflicts) (condition)
Package

trivia.level1.

Methods
Reader Method: conflicts ((condition guard1-pattern-nonlinear))
Writer Method: (setf conflicts) ((condition guard1-pattern-nonlinear))
Source

impl.lisp.

Target Slot

conflicts.

Reader Method: conflicts ((condition or1-pattern-inconsistency))
Writer Method: (setf conflicts) ((condition or1-pattern-inconsistency))
Source

impl.lisp.

Target Slot

conflicts.

Generic Reader: match-error-pattern (condition)
Package

trivia.level2.

Methods
Reader Method: match-error-pattern ((condition match-error))
Source

sugars.lisp.

Target Slot

pattern.

Generic Reader: match-error-patterns (condition)
Package

trivia.level2.

Methods
Reader Method: match-error-patterns ((condition match-error))
Source

sugars.lisp.

Target Slot

pattern.

Generic Reader: match-error-values (condition)
Package

trivia.level2.

Methods
Reader Method: match-error-values ((condition match-error))
Source

sugars.lisp.

Target Slot

values.

Generic Reader: pattern (condition)
Generic Writer: (setf pattern) (condition)
Package

trivia.level1.

Methods
Reader Method: pattern ((condition guard1-pattern-nonlinear))
Writer Method: (setf pattern) ((condition guard1-pattern-nonlinear))
Source

impl.lisp.

Target Slot

pattern.

Reader Method: pattern ((condition or1-pattern-inconsistency))
Writer Method: (setf pattern) ((condition or1-pattern-inconsistency))
Source

impl.lisp.

Target Slot

pattern.


5.1.5 Conditions

Condition: guard1-pattern-nonlinear
Package

trivia.level1.

Source

impl.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: pattern
Initargs

:pattern

Readers

pattern.

Writers

(setf pattern).

Slot: conflicts
Initargs

:conflicts

Readers

conflicts.

Writers

(setf conflicts).

Condition: match-error
Package

trivia.level2.

Source

sugars.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: pattern
Package

trivia.level1.

Initargs

:pattern

Readers
Writers

This slot is read-only.

Slot: values
Package

common-lisp.

Initargs

:values

Readers

match-error-values.

Writers

This slot is read-only.

Condition: or1-pattern-inconsistency
Package

trivia.level1.

Source

impl.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: pattern
Initargs

:pattern

Readers

pattern.

Writers

(setf pattern).

Slot: conflicts
Initargs

:conflicts

Readers

conflicts.

Writers

(setf conflicts).


5.2 Internals


5.2.1 Special variables

Special Variable: *arity-check-by-test-call-warning-shown*

A flag which controls the style-warning produced by using *arity-check-by-test-call*.

Package

trivia.level2.impl.

Source

derived-class.lisp.

Special Variable: *bindings*
Package

trivia.level0.

Source

impl.lisp.

Special Variable: *correct-pattern-cache*
Package

trivia.level1.impl.

Source

impl.lisp.

Special Variable: *env*
Package

trivia.level0.

Source

impl.lisp.

Special Variable: *grounding-clause-limit*

The limit for grounding the OR patterns. If the grounding resulted in clauses more than this limit, it undoes the grounding.

Package

trivia.balland2006.

Source

optimizer.lisp.

Special Variable: *inline-pattern-doc-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *inline-pattern-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *optimization-report-threshold*

Prints the runtime of optimization passes when it exceeds this limit

Package

trivia.balland2006.

Source

optimizer.lisp.

Special Variable: *optimizer-doc-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *optimizer-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *pattern-doc-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *pattern-table*
Package

trivia.level2.impl.

Source

impl.lisp.

Special Variable: *what*
Package

trivia.level0.

Source

impl.lisp.

Special Variable: +match*-doc+
Package

trivia.level2.impl.

Source

sugars.lisp.

Special Variable: +match-doc+
Package

trivia.level2.impl.

Source

sugars.lisp.

Special Variable: +multiple-value-match-doc+
Package

trivia.level2.impl.

Source

sugars.lisp.


5.2.2 Macros

Macro: %define-hash-table-entries-pattern (name entry-pattern)
Package

trivia.level2.impl.

Source

derived.lisp.

Macro: ensure-getf (place key &optional default)
Package

trivia.level1.impl.

Source

impl.lisp.

Macro: inline-pattern-let (bindings &body body)
Package

trivia.level2.impl.

Source

impl.lisp.

Macro: once-only (specs &body forms)
Package

trivia.level0.

Source

package.lisp.

Macro: optimizer-let (bindings &body body)
Package

trivia.level2.impl.

Source

impl.lisp.

Macro: pattern-let (bindings &body body)
Package

trivia.level2.impl.

Source

impl.lisp.


5.2.3 Ordinary functions

Function: %correct-more-patterns (more)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: %match (arg clauses)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: %variables (pattern)

given a pattern, traverse the matching tree and returns a list of variables bounded by guard1 pattern. Temporary symbols are not accounted.

Package

trivia.level1.impl.

Source

impl.lisp.

Function: %variables-more-patterns (more-patterns)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: accessor-form (it type parsed1)

used when the type is a class, structure etc.

Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: accessor-form-on-built-in-class (it type parsed1)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: accessor-form-on-class (it type parsed1)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: accessor-form-on-structure (it type parsed1)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: accessor-form-using-function (it type parsed1)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: ambiguous-slot-error (format-control &rest args)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: anonymize-level1-pattern (pattern)

Recursively anonymize the given pattern. Only accepts guard1 and or1 patterns

Package

trivia.level2.impl.

Source

derived.lisp.

Function: anonymize-pattern (pattern sym)
Package

trivia.level2.impl.

Source

derived.lisp.

Function: apply-or-grounding (clauses)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: array-type-spec (adjustable has-fill-pointer displaced-to)
Package

trivia.level2.impl.

Source

arrays.lisp.

Function: balland2006 (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: bind-missing-vars-with-nil (pattern missing)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: call-with-mvb-temp-vars (clauses fn)
Package

trivia.level2.impl.

Source

sugars.lisp.

Function: combine-guard1-subpatterns (guard1-patterns)
Package

trivia.level2.impl.

Source

derived.lisp.

Function: common-specs (dimensions rank total-size &optional rank-error)

Deduce the rank from array DIMENSIONS, then normalize and check the consistency of the specification. For example, DIMENSION = ’(1 2 3) and RANK = 2 is inconsistent, the RANK should be 3.

Package

trivia.level2.impl.

Source

arrays.lisp.

Function: compile-destructuring-pattern (ops &optional default)
Package

trivia.level2.impl.

Source

derived3.lisp.

Function: compile-keyword-patterns (subpatterns)
Package

trivia.level2.impl.

Source

derived3.lisp.

Function: correct-pattern* (pattern)

Recursively check and try to correct the mismatch in the set of variables in or1 patterns

Package

trivia.level1.impl.

Source

impl.lisp.

Function: decompose-array-contents (x &optional dim offset)
Package

trivia.level2.impl.

Source

derived.lisp.

Function: destructure-guard1-subpatterns (more-patterns body)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: divide-clauses (clauses types)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: easy-infer-type (fn-sym)

same thing as in type-i:unary-function. copied here in order to remove dependency

Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: element-type-spec (element-type)
Package

trivia.level2.impl.

Source

arrays.lisp.

Function: expand-and (subpatterns)
Package

trivia.level2.impl.

Source

derived.lisp.

Function: expand-clause (clause)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: expand-multipatterns (patterns)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: find-effective-slot (symbol type)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: find-reader (slot type)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: find-tree (obj tree &key test)
Package

trivia.balland2006.

Source

column-swapping.lisp.

Function: gen-union (&optional x y)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: gensym* (name)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: gensym* (name)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: ground-or (clause)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: grounding-limit-reached-p (clauses)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: inline-pattern-boundp (symbol)

Automatically defined boolean function.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: lambda-list-unary-p (lambda-list)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: make-gensyms (list &optional name)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: make-pattern-predicate (pattern)
Package

trivia.level0.

Source

impl.lisp.

Function: map-accessors (parsed it type)
Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: mapcar1-with-last (fn list)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: mapcar1-with-next (fn list)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: match-clause (arg pattern body)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: match-clauses (arg clauses)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: merge-variables (seq1 seq2)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: negate-level1-pattern (pattern)

Recursively anonymize the given pattern. Only accepts guard1 and or1 patterns

Package

trivia.level2.impl.

Source

derived.lisp.

Function: optimizer-boundp (symbol)

Automatically defined boolean function.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: pad (max clause)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: parse-lambda-list (argv &optional canonicalp)
Package

trivia.level2.impl.

Source

derived3.lisp.

Function: parse-matcher-body (body)
Package

trivia.level2.impl.

Source

sugars.lisp.

Function: parse-patterns (clauses)
Package

trivia.level0.

Source

impl.lisp.

Function: parse-slots (slots)

canonicalize the slot into (symbol pattern) form

Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: pattern-boundp (symbol)

Automatically defined boolean function.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: pattern-expand-all/lift (subpattern)

Expand the given pattern recursively. On encoutnering a guard pattern, it lifts its condition.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: pattern-expand-all/lift0 (subpattern)

Expand the given pattern recursively. On encoutnering a guard pattern,
it accumulates its condition into a list.
Returns two values: the pattern without guarded conditions, and a list of conditions.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: process-keyword-args (args)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: process-lambda-args (args)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: process-optional-args (args)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: process-rest-args (args)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: set-equal-or-error (&optional seq1 seq2)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: set-vector-matcher (name &optional ref need-type soft)
Package

trivia.level2.impl.

Source

arrays.lisp.

Function: swappable-rec (patterns1 patterns2 under)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: symbol-inline-pattern (symbol &optional default)

Automatically defined getter function. When DEFAULT is supplied, the value is set automatically.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: (setf symbol-inline-pattern) (symbol)

Automatically defined setter function.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: symbol-pattern (symbol &optional default)

Automatically defined getter function. When DEFAULT is supplied, the value is set automatically.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: (setf symbol-pattern) (symbol)

Automatically defined setter function.

Package

trivia.level2.impl.

Source

impl.lisp.

Function: take-while (list predicate)

Checks if predicate returns true, for each element of a list.
Collect the elements until it returns false.
Returns the collected elements and the remaining elements.
If the list exhausted by cdr of the list being an atom (not necessarily nil),
then similarly returns the collected elements and the atom, which might be nil in case of regular list, or otherwise it can be anything (e.g. (take-while ’(a . b) (constantly t)) returns (values ’(a) ’b)).

Package

trivia.level2.impl.

Source

derived3.lisp.

Function: timeout-p (start-time)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: type-disjointp (t1 t2 &optional under)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: type-equal (t1 t2 &optional under)
Package

trivia.balland2006.

Source

optimizer.lisp.

Function: type-exhaustivep (t1 t2 &optional under)

Returns true for types under, t1, t2, if under = t1 + t2 and nothing more

Package

trivia.balland2006.

Source

optimizer.lisp.

Function: type-of-form (form &optional weak)

Returns a type of FORM.
When WEAK is non-nil, it returns a decomposed type of the quoted cons cells instead of eql type for the cons object itself. Note that this is equivalent to the full type-inference mechanism, so we are reinventing a wheel here.

Package

trivia.level2.impl.

Source

derived.lisp.

Function: type-of-quoted-form (form)
Package

trivia.level2.impl.

Source

derived.lisp.

Function: unary-function-p (fn)

test if a function is unary.

Package

trivia.level2.impl.

Source

derived-class.lisp.

Function: union* (&optional x y)
Package

trivia.level1.impl.

Source

impl.lisp.

Function: variablep (pattern)
Package

trivia.level2.impl.

Source

impl.lisp.

Function: wildcardp (pattern)
Package

trivia.level2.impl.

Source

impl.lisp.


5.2.4 Conditions

Condition: ambiguous-slot-error
Package

trivia.level2.impl.

Source

derived-class.lisp.

Direct superclasses

simple-error.

Condition: guard-pattern

signaled when a guard pattern is found.

Package

trivia.level2.impl.

Source

impl.lisp.

Direct superclasses

condition.

Direct slots
Slot: subpattern
Initargs

:subpattern

Slot: test
Initargs

:test

Condition: hash-table-odd-number-of-entries-warning
Package

trivia.level2.impl.

Source

derived.lisp.

Direct superclasses

simple-style-warning.

Condition: place-pattern
Package

trivia.level1.impl.

Source

impl.lisp.

Direct superclasses

condition.

Condition: unbound-inline-pattern
Package

trivia.level2.impl.

Source

impl.lisp.

Direct superclasses

unbound-variable.

Condition: unbound-optimizer
Package

trivia.level2.impl.

Source

impl.lisp.

Direct superclasses

unbound-variable.

Condition: unbound-pattern
Package

trivia.level2.impl.

Source

impl.lisp.

Direct superclasses

unbound-variable.

Condition: wildcard

signaled when a wildcard pattern is found. pattern-expand-all receives it and removes the pattern

Package

trivia.level2.impl.

Source

impl.lisp.

Direct superclasses

condition.


5.2.5 Types

Type: inline-pattern-type ()
Package

trivia.level2.impl.

Source

impl.lisp.

Type: optimizer-type ()
Package

trivia.level2.impl.

Source

impl.lisp.

Type: pattern-type ()
Package

trivia.level2.impl.

Source

impl.lisp.

Type: variable-symbol ()
Package

trivia.level2.impl.

Source

derived3.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   I   L   M   N   O   P   S   T   U   V   W  
Index Entry  Section

%
%correct-more-patterns: Private ordinary functions
%define-hash-table-entries-pattern: Private macros
%match: Private ordinary functions
%variables: Private ordinary functions
%variables-more-patterns: Private ordinary functions

(
(setf conflicts): Public generic functions
(setf conflicts): Public generic functions
(setf conflicts): Public generic functions
(setf pattern): Public generic functions
(setf pattern): Public generic functions
(setf pattern): Public generic functions
(setf symbol-inline-pattern): Private ordinary functions
(setf symbol-optimizer): Public ordinary functions
(setf symbol-pattern): Private ordinary functions

A
accessor-form: Private ordinary functions
accessor-form-on-built-in-class: Private ordinary functions
accessor-form-on-class: Private ordinary functions
accessor-form-on-structure: Private ordinary functions
accessor-form-using-function: Private ordinary functions
ambiguous-slot-error: Private ordinary functions
anonymize-level1-pattern: Private ordinary functions
anonymize-pattern: Private ordinary functions
apply-fusion: Public ordinary functions
apply-interleaving: Public ordinary functions
apply-or-grounding: Private ordinary functions
apply-swapping: Public ordinary functions
array-type-spec: Private ordinary functions

B
balland2006: Private ordinary functions
bind-missing-vars-with-nil: Private ordinary functions

C
call-with-mvb-temp-vars: Private ordinary functions
cmatch: Public macros
cmatch*: Public macros
combine-guard1-subpatterns: Private ordinary functions
common-specs: Private ordinary functions
compile-destructuring-pattern: Private ordinary functions
compile-keyword-patterns: Private ordinary functions
conflicts: Public generic functions
conflicts: Public generic functions
conflicts: Public generic functions
correct-pattern: Public ordinary functions
correct-pattern*: Private ordinary functions

D
decompose-array-contents: Private ordinary functions
defoptimizer: Public macros
defpattern: Public macros
defpattern-inline: Public macros
defun-cmatch: Public macros
defun-cmatch*: Public macros
defun-ematch: Public macros
defun-ematch*: Public macros
defun-match: Public macros
defun-match*: Public macros
destructure-guard1-subpatterns: Private ordinary functions
divide-clauses: Private ordinary functions

E
easy-infer-type: Private ordinary functions
element-type-spec: Private ordinary functions
ematch: Public macros
ematch*: Public macros
ematch0: Public macros
ensure-getf: Private macros
expand-and: Private ordinary functions
expand-clause: Private ordinary functions
expand-multipatterns: Private ordinary functions

F
fail: Public macros
find-effective-slot: Private ordinary functions
find-reader: Private ordinary functions
find-tree: Private ordinary functions
Function, %correct-more-patterns: Private ordinary functions
Function, %match: Private ordinary functions
Function, %variables: Private ordinary functions
Function, %variables-more-patterns: Private ordinary functions
Function, (setf symbol-inline-pattern): Private ordinary functions
Function, (setf symbol-optimizer): Public ordinary functions
Function, (setf symbol-pattern): Private ordinary functions
Function, accessor-form: Private ordinary functions
Function, accessor-form-on-built-in-class: Private ordinary functions
Function, accessor-form-on-class: Private ordinary functions
Function, accessor-form-on-structure: Private ordinary functions
Function, accessor-form-using-function: Private ordinary functions
Function, ambiguous-slot-error: Private ordinary functions
Function, anonymize-level1-pattern: Private ordinary functions
Function, anonymize-pattern: Private ordinary functions
Function, apply-fusion: Public ordinary functions
Function, apply-interleaving: Public ordinary functions
Function, apply-or-grounding: Private ordinary functions
Function, apply-swapping: Public ordinary functions
Function, array-type-spec: Private ordinary functions
Function, balland2006: Private ordinary functions
Function, bind-missing-vars-with-nil: Private ordinary functions
Function, call-with-mvb-temp-vars: Private ordinary functions
Function, combine-guard1-subpatterns: Private ordinary functions
Function, common-specs: Private ordinary functions
Function, compile-destructuring-pattern: Private ordinary functions
Function, compile-keyword-patterns: Private ordinary functions
Function, correct-pattern: Public ordinary functions
Function, correct-pattern*: Private ordinary functions
Function, decompose-array-contents: Private ordinary functions
Function, destructure-guard1-subpatterns: Private ordinary functions
Function, divide-clauses: Private ordinary functions
Function, easy-infer-type: Private ordinary functions
Function, element-type-spec: Private ordinary functions
Function, expand-and: Private ordinary functions
Function, expand-clause: Private ordinary functions
Function, expand-multipatterns: Private ordinary functions
Function, find-effective-slot: Private ordinary functions
Function, find-reader: Private ordinary functions
Function, find-tree: Private ordinary functions
Function, fuse: Public ordinary functions
Function, fusiblep: Public ordinary functions
Function, gen-union: Private ordinary functions
Function, generate-multi-matcher: Public ordinary functions
Function, gensym*: Private ordinary functions
Function, gensym*: Private ordinary functions
Function, ground-or: Private ordinary functions
Function, grounding-limit-reached-p: Private ordinary functions
Function, inline-pattern-boundp: Private ordinary functions
Function, inline-pattern-expand: Public ordinary functions
Function, interleave: Public ordinary functions
Function, lambda-list-unary-p: Private ordinary functions
Function, make-gensyms: Private ordinary functions
Function, make-pattern-predicate: Private ordinary functions
Function, map-accessors: Private ordinary functions
Function, mapcar1-with-last: Private ordinary functions
Function, mapcar1-with-next: Private ordinary functions
Function, match-clause: Private ordinary functions
Function, match-clauses: Private ordinary functions
Function, merge-variables: Private ordinary functions
Function, negate-level1-pattern: Private ordinary functions
Function, optimizer-boundp: Private ordinary functions
Function, pad: Private ordinary functions
Function, parse-lambda-list: Private ordinary functions
Function, parse-matcher-body: Private ordinary functions
Function, parse-patterns: Private ordinary functions
Function, parse-slots: Private ordinary functions
Function, pattern-boundp: Private ordinary functions
Function, pattern-dependencies: Public ordinary functions
Function, pattern-dependent: Public ordinary functions
Function, pattern-expand: Public ordinary functions
Function, pattern-expand-1: Public ordinary functions
Function, pattern-expand-all: Public ordinary functions
Function, pattern-expand-all/lift: Private ordinary functions
Function, pattern-expand-all/lift0: Private ordinary functions
Function, predicate-p: Public ordinary functions
Function, predicatep: Public ordinary functions
Function, preprocess-symopts: Public ordinary functions
Function, process-keyword-args: Private ordinary functions
Function, process-lambda-args: Private ordinary functions
Function, process-optional-args: Private ordinary functions
Function, process-rest-args: Private ordinary functions
Function, set-equal-or-error: Private ordinary functions
Function, set-vector-matcher: Private ordinary functions
Function, swappable: Public ordinary functions
Function, swappable-rec: Private ordinary functions
Function, symbol-inline-pattern: Private ordinary functions
Function, symbol-optimizer: Public ordinary functions
Function, symbol-pattern: Private ordinary functions
Function, take-while: Private ordinary functions
Function, timeout-p: Private ordinary functions
Function, type-disjointp: Private ordinary functions
Function, type-equal: Private ordinary functions
Function, type-exhaustivep: Private ordinary functions
Function, type-of-form: Private ordinary functions
Function, type-of-quoted-form: Private ordinary functions
Function, unary-function-p: Private ordinary functions
Function, union*: Private ordinary functions
Function, variablep: Private ordinary functions
Function, variables: Public ordinary functions
Function, wildcardp: Private ordinary functions
fuse: Public ordinary functions
fusiblep: Public ordinary functions

G
gen-union: Private ordinary functions
generate-multi-matcher: Public ordinary functions
Generic Function, (setf conflicts): Public generic functions
Generic Function, (setf pattern): Public generic functions
Generic Function, conflicts: Public generic functions
Generic Function, match-error-pattern: Public generic functions
Generic Function, match-error-patterns: Public generic functions
Generic Function, match-error-values: Public generic functions
Generic Function, pattern: Public generic functions
gensym*: Private ordinary functions
gensym*: Private ordinary functions
ground-or: Private ordinary functions
grounding-limit-reached-p: Private ordinary functions

I
if-match: Public macros
in-optimizer: Public macros
inline-pattern-boundp: Private ordinary functions
inline-pattern-expand: Public ordinary functions
inline-pattern-let: Private macros
interleave: Public ordinary functions

L
lambda-cmatch: Public macros
lambda-cmatch*: Public macros
lambda-cmatch1: Public macros
lambda-ematch: Public macros
lambda-ematch*: Public macros
lambda-ematch0: Public macros
lambda-ematch1: Public macros
lambda-list-unary-p: Private ordinary functions
lambda-match: Public macros
lambda-match*: Public macros
lambda-match0: Public macros
lambda-match1: Public macros
let-match: Public macros
let-match*: Public macros
let-match1: Public macros

M
Macro, %define-hash-table-entries-pattern: Private macros
Macro, cmatch: Public macros
Macro, cmatch*: Public macros
Macro, defoptimizer: Public macros
Macro, defpattern: Public macros
Macro, defpattern-inline: Public macros
Macro, defun-cmatch: Public macros
Macro, defun-cmatch*: Public macros
Macro, defun-ematch: Public macros
Macro, defun-ematch*: Public macros
Macro, defun-match: Public macros
Macro, defun-match*: Public macros
Macro, ematch: Public macros
Macro, ematch*: Public macros
Macro, ematch0: Public macros
Macro, ensure-getf: Private macros
Macro, fail: Public macros
Macro, if-match: Public macros
Macro, in-optimizer: Public macros
Macro, inline-pattern-let: Private macros
Macro, lambda-cmatch: Public macros
Macro, lambda-cmatch*: Public macros
Macro, lambda-cmatch1: Public macros
Macro, lambda-ematch: Public macros
Macro, lambda-ematch*: Public macros
Macro, lambda-ematch0: Public macros
Macro, lambda-ematch1: Public macros
Macro, lambda-match: Public macros
Macro, lambda-match*: Public macros
Macro, lambda-match0: Public macros
Macro, lambda-match1: Public macros
Macro, let-match: Public macros
Macro, let-match*: Public macros
Macro, let-match1: Public macros
Macro, match: Public macros
Macro, match*: Public macros
Macro, match0: Public macros
Macro, match1: Public macros
Macro, match2: Public macros
Macro, match2*: Public macros
Macro, match2*+: Public macros
Macro, match2+: Public macros
Macro, multiple-value-cmatch: Public macros
Macro, multiple-value-ematch: Public macros
Macro, multiple-value-match: Public macros
Macro, next: Public macros
Macro, once-only: Private macros
Macro, optimizer-let: Private macros
Macro, pattern-let: Private macros
Macro, skip: Public macros
Macro, trace-when: Public macros
Macro, unless-match: Public macros
Macro, when-match: Public macros
make-gensyms: Private ordinary functions
make-pattern-predicate: Private ordinary functions
map-accessors: Private ordinary functions
mapcar1-with-last: Private ordinary functions
mapcar1-with-next: Private ordinary functions
match: Public macros
match*: Public macros
match-clause: Private ordinary functions
match-clauses: Private ordinary functions
match-error-pattern: Public generic functions
match-error-pattern: Public generic functions
match-error-patterns: Public generic functions
match-error-patterns: Public generic functions
match-error-values: Public generic functions
match-error-values: Public generic functions
match0: Public macros
match1: Public macros
match2: Public macros
match2*: Public macros
match2*+: Public macros
match2+: Public macros
merge-variables: Private ordinary functions
Method, (setf conflicts): Public generic functions
Method, (setf conflicts): Public generic functions
Method, (setf pattern): Public generic functions
Method, (setf pattern): Public generic functions
Method, conflicts: Public generic functions
Method, conflicts: Public generic functions
Method, match-error-pattern: Public generic functions
Method, match-error-patterns: Public generic functions
Method, match-error-values: Public generic functions
Method, pattern: Public generic functions
Method, pattern: Public generic functions
multiple-value-cmatch: Public macros
multiple-value-ematch: Public macros
multiple-value-match: Public macros

N
negate-level1-pattern: Private ordinary functions
next: Public macros

O
once-only: Private macros
optimizer-boundp: Private ordinary functions
optimizer-let: Private macros

P
pad: Private ordinary functions
parse-lambda-list: Private ordinary functions
parse-matcher-body: Private ordinary functions
parse-patterns: Private ordinary functions
parse-slots: Private ordinary functions
pattern: Public generic functions
pattern: Public generic functions
pattern: Public generic functions
pattern-boundp: Private ordinary functions
pattern-dependencies: Public ordinary functions
pattern-dependent: Public ordinary functions
pattern-expand: Public ordinary functions
pattern-expand-1: Public ordinary functions
pattern-expand-all: Public ordinary functions
pattern-expand-all/lift: Private ordinary functions
pattern-expand-all/lift0: Private ordinary functions
pattern-let: Private macros
predicate-p: Public ordinary functions
predicatep: Public ordinary functions
preprocess-symopts: Public ordinary functions
process-keyword-args: Private ordinary functions
process-lambda-args: Private ordinary functions
process-optional-args: Private ordinary functions
process-rest-args: Private ordinary functions

S
set-equal-or-error: Private ordinary functions
set-vector-matcher: Private ordinary functions
skip: Public macros
swappable: Public ordinary functions
swappable-rec: Private ordinary functions
symbol-inline-pattern: Private ordinary functions
symbol-optimizer: Public ordinary functions
symbol-pattern: Private ordinary functions

T
take-while: Private ordinary functions
timeout-p: Private ordinary functions
trace-when: Public macros
type-disjointp: Private ordinary functions
type-equal: Private ordinary functions
type-exhaustivep: Private ordinary functions
type-of-form: Private ordinary functions
type-of-quoted-form: Private ordinary functions

U
unary-function-p: Private ordinary functions
union*: Private ordinary functions
unless-match: Public macros

V
variablep: Private ordinary functions
variables: Public ordinary functions

W
when-match: Public macros
wildcardp: Private ordinary functions


A.3 Variables

Jump to:   *   +  
C   P   S   T   V  
Index Entry  Section

*
*arity-check-by-test-call*: Public special variables
*arity-check-by-test-call-warning-shown*: Private special variables
*bindings*: Private special variables
*correct-pattern-cache*: Private special variables
*env*: Private special variables
*grounding-clause-limit*: Private special variables
*inline-pattern-doc-table*: Private special variables
*inline-pattern-table*: Private special variables
*lexvars*: Public special variables
*optimization-report-threshold*: Private special variables
*optimization-timeout*: Public special variables
*optimizer*: Public special variables
*optimizer-doc-table*: Private special variables
*optimizer-table*: Private special variables
*or-pattern-allow-unshared-variables*: Public special variables
*pattern-doc-table*: Private special variables
*pattern-table*: Private special variables
*test-call-argument*: Public special variables
*trace-dispatching*: Public special variables
*trace-optimization*: Public special variables
*what*: Private special variables

+
+match*-doc+: Private special variables
+match-doc+: Private special variables
+multiple-value-match-doc+: Private special variables

C
conflicts: Public conditions
conflicts: Public conditions

P
pattern: Public conditions
pattern: Public conditions
pattern: Public conditions

S
Slot, conflicts: Public conditions
Slot, conflicts: Public conditions
Slot, pattern: Public conditions
Slot, pattern: Public conditions
Slot, pattern: Public conditions
Slot, subpattern: Private conditions
Slot, test: Private conditions
Slot, values: Public conditions
Special Variable, *arity-check-by-test-call*: Public special variables
Special Variable, *arity-check-by-test-call-warning-shown*: Private special variables
Special Variable, *bindings*: Private special variables
Special Variable, *correct-pattern-cache*: Private special variables
Special Variable, *env*: Private special variables
Special Variable, *grounding-clause-limit*: Private special variables
Special Variable, *inline-pattern-doc-table*: Private special variables
Special Variable, *inline-pattern-table*: Private special variables
Special Variable, *lexvars*: Public special variables
Special Variable, *optimization-report-threshold*: Private special variables
Special Variable, *optimization-timeout*: Public special variables
Special Variable, *optimizer*: Public special variables
Special Variable, *optimizer-doc-table*: Private special variables
Special Variable, *optimizer-table*: Private special variables
Special Variable, *or-pattern-allow-unshared-variables*: Public special variables
Special Variable, *pattern-doc-table*: Private special variables
Special Variable, *pattern-table*: Private special variables
Special Variable, *test-call-argument*: Public special variables
Special Variable, *trace-dispatching*: Public special variables
Special Variable, *trace-optimization*: Public special variables
Special Variable, *what*: Private special variables
Special Variable, +match*-doc+: Private special variables
Special Variable, +match-doc+: Private special variables
Special Variable, +multiple-value-match-doc+: Private special variables
subpattern: Private conditions

T
test: Private conditions

V
values: Public conditions


A.4 Data types

Jump to:   A   C   D   F   G   H   I   M   O   P   S   T   U   V   W  
Index Entry  Section

A
ambiguous-slot-error: Private conditions
arrays.lisp: The trivia․level2/arrays․lisp file

C
column-swapping.lisp: The trivia․balland2006/column-swapping․lisp file
Condition, ambiguous-slot-error: Private conditions
Condition, guard-pattern: Private conditions
Condition, guard1-pattern-nonlinear: Public conditions
Condition, hash-table-odd-number-of-entries-warning: Private conditions
Condition, match-error: Public conditions
Condition, or1-pattern-inconsistency: Public conditions
Condition, place-pattern: Private conditions
Condition, unbound-inline-pattern: Private conditions
Condition, unbound-optimizer: Private conditions
Condition, unbound-pattern: Private conditions
Condition, wildcard: Private conditions

D
derived-class.lisp: The trivia․level2/derived-class․lisp file
derived-numbers.lisp: The trivia․level2/derived-numbers․lisp file
derived.lisp: The trivia․level2/derived․lisp file
derived2.lisp: The trivia․level2/derived2․lisp file
derived3.lisp: The trivia․level2/derived3․lisp file

F
File, arrays.lisp: The trivia․level2/arrays․lisp file
File, column-swapping.lisp: The trivia․balland2006/column-swapping․lisp file
File, derived-class.lisp: The trivia․level2/derived-class․lisp file
File, derived-numbers.lisp: The trivia․level2/derived-numbers․lisp file
File, derived.lisp: The trivia․level2/derived․lisp file
File, derived2.lisp: The trivia․level2/derived2․lisp file
File, derived3.lisp: The trivia․level2/derived3․lisp file
File, impl.lisp: The trivia․level2/impl․lisp file
File, impl.lisp: The trivia․level1/impl․lisp file
File, impl.lisp: The trivia․level0/impl․lisp file
File, inline-pattern.lisp: The trivia․level2/inline-pattern․lisp file
File, optimizer.lisp: The trivia․balland2006/optimizer․lisp file
File, package.lisp: The trivia․balland2006/package․lisp file
File, package.lisp: The trivia․level2/package․lisp file
File, package.lisp: The trivia․level1/package․lisp file
File, package.lisp: The trivia․level0/package․lisp file
File, sugars.lisp: The trivia․level2/sugars․lisp file
File, trivia.asd: The trivia/trivia․asd file
File, trivia.balland2006.asd: The trivia․balland2006/trivia․balland2006․asd file
File, trivia.level0.asd: The trivia․level0/trivia․level0․asd file
File, trivia.level1.asd: The trivia․level1/trivia․level1․asd file
File, trivia.level2.asd: The trivia․level2/trivia․level2․asd file
File, trivia.trivial.asd: The trivia․trivial/trivia․trivial․asd file

G
guard-pattern: Private conditions
guard1-pattern-nonlinear: Public conditions

H
hash-table-odd-number-of-entries-warning: Private conditions

I
impl.lisp: The trivia․level2/impl․lisp file
impl.lisp: The trivia․level1/impl․lisp file
impl.lisp: The trivia․level0/impl․lisp file
inline-pattern-type: Private types
inline-pattern.lisp: The trivia․level2/inline-pattern․lisp file

M
match-error: Public conditions

O
optimizer-type: Private types
optimizer.lisp: The trivia․balland2006/optimizer․lisp file
or1-pattern-inconsistency: Public conditions

P
Package, trivia.balland2006: The trivia․balland2006 package
Package, trivia.fail: The trivia․fail package
Package, trivia.level0: The trivia․level0 package
Package, trivia.level1: The trivia․level1 package
Package, trivia.level1.impl: The trivia․level1․impl package
Package, trivia.level2: The trivia․level2 package
Package, trivia.level2.impl: The trivia․level2․impl package
Package, trivia.next: The trivia․next package
Package, trivia.skip: The trivia․skip package
package.lisp: The trivia․balland2006/package․lisp file
package.lisp: The trivia․level2/package․lisp file
package.lisp: The trivia․level1/package․lisp file
package.lisp: The trivia․level0/package․lisp file
pattern-type: Private types
place-pattern: Private conditions

S
sugars.lisp: The trivia․level2/sugars․lisp file
System, trivia: The trivia system
System, trivia.balland2006: The trivia․balland2006 system
System, trivia.level0: The trivia․level0 system
System, trivia.level1: The trivia․level1 system
System, trivia.level2: The trivia․level2 system
System, trivia.trivial: The trivia․trivial system

T
trivia: The trivia system
trivia.asd: The trivia/trivia․asd file
trivia.balland2006: The trivia․balland2006 system
trivia.balland2006: The trivia․balland2006 package
trivia.balland2006.asd: The trivia․balland2006/trivia․balland2006․asd file
trivia.fail: The trivia․fail package
trivia.level0: The trivia․level0 system
trivia.level0: The trivia․level0 package
trivia.level0.asd: The trivia․level0/trivia․level0․asd file
trivia.level1: The trivia․level1 system
trivia.level1: The trivia․level1 package
trivia.level1.asd: The trivia․level1/trivia․level1․asd file
trivia.level1.impl: The trivia․level1․impl package
trivia.level2: The trivia․level2 system
trivia.level2: The trivia․level2 package
trivia.level2.asd: The trivia․level2/trivia․level2․asd file
trivia.level2.impl: The trivia․level2․impl package
trivia.next: The trivia․next package
trivia.skip: The trivia․skip package
trivia.trivial: The trivia․trivial system
trivia.trivial.asd: The trivia․trivial/trivia․trivial․asd file
Type, inline-pattern-type: Private types
Type, optimizer-type: Private types
Type, pattern-type: Private types
Type, variable-symbol: Private types

U
unbound-inline-pattern: Private conditions
unbound-optimizer: Private conditions
unbound-pattern: Private conditions

V
variable-symbol: Private types

W
wildcard: Private conditions