Next: Introduction, Previous: (dir), Up: (dir) [Contents][Index]
This is the specialization-store Reference Manual, version 0.0.5, generated automatically by Declt version 3.0 "Montgomery Scott" on Tue Dec 22 15:06:23 2020 GMT+0.
• Introduction | What specialization-store is all about | |
• Systems | The systems documentation | |
• Modules | The modules documentation | |
• Files | The files documentation | |
• Packages | The packages documentation | |
• Definitions | The symbols documentation | |
• Indexes | Concepts, functions, variables and data types |
The specialization store system provides a new kind of function, called a store function, whose behavior is determined by the types of objects given as arguments to the store function.
Associated with each store function is a set of specialization objects. Each specialization encapsulates behavior and the domain for which the behavior is defined.
A premise of specialization store is that all specializations should perform the same task. Specializations should only differ in how the task is performed. This premise resolves ambiguities that arise when using types, rather than classes, to select the most specific specialization to apply.
Specialization store is a major component of a related system, the template-function system. A wiki page in this project outlines one of the problems the specialization store system was designed to address.
The following list summarizes the major differences between a store function and common lisp's generic function:
The specialization store system includes a meta object protocol to allow users to change the default implementation.
Documentation for this project is available in the project wiki.
The specialization store system has been tested using SBCL, Clozure Common Lisp, CMUCL and Embeddable Common Lisp.
Great effort has been spent on implementing this system such that it is portable to all implementations. The compile time dispatch functionality makes extensive use of compiler macros and the CLTL2 environment API.
The specialization store system uses ASDF to the manage compilation and loading of source files.
The specialization store system depends on the following systems:
The specialization store system can be loaded in to your lisp environment by evaluating the following forms
(asdf:load-system "specialization-store")
The specialization store system includes a large suite of tests. These tests can be executed by evaluating the following forms
(asdf:test-system "specialization-store")
Next: Modules, Previous: Introduction, Up: Top [Contents][Index]
The main system appears first, followed by any subsystem dependency.
• The specialization-store system | ||
• The specialization-store-features system |
Next: The specialization-store-features system, Previous: Systems, Up: Systems [Contents][Index]
Mark Cox
Simplified BSD License variant
The specialization store system provides a new kind of function, called a store function, whose behavior depends on the types of objects passed to the function.
0.0.5
specialization-store.asd (file)
src (module)
Previous: The specialization-store system, Up: Systems [Contents][Index]
Mark Cox
A system which identifies features of the implementation needed for the specialization-store system.
features (module)
Modules are listed depth-first from the system components tree.
• The specialization-store/src module | ||
• The specialization-store-features/features module |
Next: The specialization-store-features/features module, Previous: Modules, Up: Modules [Contents][Index]
specialization-store (system)
src/
Previous: The specialization-store/src module, Up: Modules [Contents][Index]
specialization-store-features (system)
features/
Files are sorted by type and then listed depth-first from the systems components trees.
• Lisp files |
Next: The specialization-store-features․asd file, Previous: Lisp files, Up: Lisp files [Contents][Index]
specialization-store.asd
specialization-store (system)
Next: The specialization-store/src/packages․lisp file, Previous: The specialization-store․asd file, Up: Lisp files [Contents][Index]
specialization-store-features.asd
specialization-store-features (system)
Next: The specialization-store/src/common․lisp file, Previous: The specialization-store-features․asd file, Up: Lisp files [Contents][Index]
src (module)
src/packages.lisp
Next: The specialization-store/src/lambda-lists․lisp file, Previous: The specialization-store/src/packages․lisp file, Up: Lisp files [Contents][Index]
packages.lisp (file)
src (module)
src/common.lisp
the-form-p (function)
Next: The specialization-store/src/dispatch․lisp file, Previous: The specialization-store/src/common․lisp file, Up: Lisp files [Contents][Index]
common.lisp (file)
src (module)
src/lambda-lists.lisp
Next: The specialization-store/src/dispatch-fixed-arity․lisp file, Previous: The specialization-store/src/lambda-lists․lisp file, Up: Lisp files [Contents][Index]
lambda-lists.lisp (file)
src (module)
src/dispatch.lisp
Next: The specialization-store/src/dispatch-variable-arity․lisp file, Previous: The specialization-store/src/dispatch․lisp file, Up: Lisp files [Contents][Index]
dispatch.lisp (file)
src (module)
src/dispatch-fixed-arity.lisp
Next: The specialization-store/src/protocols․lisp file, Previous: The specialization-store/src/dispatch-fixed-arity․lisp file, Up: Lisp files [Contents][Index]
dispatch-fixed-arity.lisp (file)
src (module)
src/dispatch-variable-arity.lisp
make-initial-dispatch-tree (function)
Next: The specialization-store/src/standard-store․lisp file, Previous: The specialization-store/src/dispatch-variable-arity․lisp file, Up: Lisp files [Contents][Index]
dispatch-variable-arity.lisp (file)
src (module)
src/protocols.lisp
Next: The specialization-store-features/features/packages․lisp file, Previous: The specialization-store/src/protocols․lisp file, Up: Lisp files [Contents][Index]
protocols.lisp (file)
src (module)
src/standard-store.lisp
Next: The specialization-store-features/features/features․lisp file, Previous: The specialization-store/src/standard-store․lisp file, Up: Lisp files [Contents][Index]
features (module)
features/packages.lisp
Previous: The specialization-store-features/features/packages․lisp file, Up: Lisp files [Contents][Index]
packages.lisp (file)
features (module)
features/features.lisp
Next: Definitions, Previous: Files, Up: Top [Contents][Index]
Packages are listed by definition order.
Next: The specialization-store․dispatch package, Previous: Packages, Up: Packages [Contents][Index]
packages.lisp (file)
Next: The specialization-store․lambda-lists package, Previous: The specialization-store․globals package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
Next: The specialization-store․standard-store package, Previous: The specialization-store․dispatch package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
Next: The specialization-store package, Previous: The specialization-store․lambda-lists package, Up: Packages [Contents][Index]
packages.lisp (file)
Next: The specialization-store․mop package, Previous: The specialization-store․standard-store package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
Next: The specialization-store․dispatch․fixed-arity package, Previous: The specialization-store package, Up: Packages [Contents][Index]
packages.lisp (file)
Next: The specialization-store․dispatch․variable-arity package, Previous: The specialization-store․mop package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
Next: The specialization-store․features package, Previous: The specialization-store․dispatch․fixed-arity package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
make-initial-dispatch-tree (function)
Previous: The specialization-store․dispatch․variable-arity package, Up: Packages [Contents][Index]
packages.lisp (file)
common-lisp
Definitions are sorted by export status, category, package, and then by lexicographic order.
• Exported definitions | ||
• Internal definitions |
Next: Internal definitions, Previous: Definitions, Up: Definitions [Contents][Index]
• Exported macros | ||
• Exported functions | ||
• Exported generic functions | ||
• Exported conditions | ||
• Exported structures | ||
• Exported classes | ||
• Exported types |
Next: Exported functions, Previous: Exported definitions, Up: Exported definitions [Contents][Index]
common.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
Next: Exported generic functions, Previous: Exported macros, Up: Exported definitions [Contents][Index]
dispatch-fixed-arity.lisp (file)
common.lisp (file)
common.lisp (file)
dispatch.lisp (file)
common.lisp (file)
common.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
common.lisp (file)
common.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-variable-arity.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
Next: Exported conditions, Previous: Exported functions, Up: Exported definitions [Contents][Index]
protocols.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
automatically generated reader method
protocols.lisp (file)
standard-store.lisp (file)
dispatch.lisp (file)
automatically generated reader method
automatically generated reader method
automatically generated reader method
lambda-lists.lisp (file)
dispatch.lisp (file)
automatically generated reader method
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
dispatch.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
dispatch.lisp (file)
automatically generated reader method
dispatch.lisp (file)
automatically generated reader method
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
automatically generated reader method
lambda-lists.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
automatically generated reader method
dispatch.lisp (file)
automatically generated reader method
dispatch.lisp (file)
automatically generated reader method
automatically generated reader method
lambda-lists.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
automatically generated writer method
standard-store.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
(setf store-documentation) (generic function)
automatically generated reader method
standard-store.lisp (file)
store-documentation (generic function)
automatically generated writer method
standard-store.lisp (file)
protocols.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
protocols.lisp (file)
automatically generated reader method
standard-store.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
Next: Exported structures, Previous: Exported generic functions, Up: Exported definitions [Contents][Index]
protocols.lisp (file)
error (condition)
ensure-store-error-object (method)
:object
ensure-store-error-object (generic function)
protocols.lisp (file)
store-error (condition)
inapplicable-arguments (method)
:arguments
(quote (error "a value for the slot :arguments must be specified."))
inapplicable-arguments (generic function)
protocols.lisp (file)
store-error (condition)
incongruent-specialization (method)
:specialization
(quote (error "a value for the slot :specialization must be specified."))
incongruent-specialization (generic function)
protocols.lisp (file)
ensure-store-error (condition)
invalid-specialization-class (method)
:specialization-class
invalid-specialization-class (generic function)
protocols.lisp (file)
ensure-store-error (condition)
invalid-store-class (method)
:store-class
invalid-store-class (generic function)
protocols.lisp (file)
ensure-store-error (condition)
invalid-store-lamba-list (method)
:store-lambda-list
invalid-store-lamba-list (generic function)
protocols.lisp (file)
error (condition)
invalid-store-name (method)
:name
(quote (error "a value for the slot :name must be specified."))
invalid-store-name (generic function)
lambda-lists.lisp (file)
error (condition)
:message
:lambda-list-description
:lambda-list
Initarg | Value |
---|---|
:lambda-list-description | specialization-store.lambda-lists::*lambda-list-description* |
:lambda-list | specialization-store.lambda-lists::*lambda-list* |
lambda-lists.lisp (file)
parse-lambda-list-error (condition)
lambda-lists.lisp (file)
parse-lambda-list-error (condition)
protocols.lisp (file)
store-error (condition)
simple-store-error-message (method)
:message
(quote (error "a value for the slot :message must be specified."))
simple-store-error-message (generic function)
protocols.lisp (file)
error (condition)
store-error-store (method)
:store
(quote (error "a value for the slot :store must be specified."))
store-error-store (generic function)
Next: Exported classes, Previous: Exported conditions, Up: Exported definitions [Contents][Index]
dispatch-fixed-arity.lisp (file)
structure-object (structure)
print-object (method)
fixed-arity-rule-type (function)
(setf fixed-arity-rule-type) (function)
fixed-arity-rule-index (function)
(setf fixed-arity-rule-index) (function)
dispatch.lisp (file)
structure-object (structure)
generate-code (method)
node-value (function)
(setf node-value) (function)
node-pass (function)
(setf node-pass) (function)
node-fail (function)
(setf node-fail) (function)
Next: Exported types, Previous: Exported structures, Up: Exported definitions [Contents][Index]
Accepts count or more arguments?
dispatch.lisp (file)
dispatch-rule (class)
:count
argument-count (generic function)
dispatch.lisp (file)
dispatch-rule (class)
:value
constantly-rule-value (generic function)
Ensure the argument count x is equal to count.
dispatch.lisp (file)
dispatch-rule (class)
:count
argument-count (generic function)
lambda-lists.lisp (file)
voluntary-parameter (class)
specialized-keyword-parameter (class)
:keyword
parameter-keyword (generic function)
dispatch.lisp (file)
dispatch-rule (class)
:keyword
parameter-keyword (generic function)
:type
parameter-type (generic function)
lambda-lists.lisp (file)
voluntary-parameter (class)
lambda-lists.lisp (file)
standard-object (class)
:var
parameter-var (generic function)
lambda-lists.lisp (file)
standard-object (class)
:original-lambda-list
original-lambda-list (generic function)
:all-parameters
all-parameters (generic function)
:required-parameters
required-parameters (generic function)
:optional-parameters
optional-parameters (generic function)
:rest-parameter
rest-parameter (generic function)
:keyword-parameters-p
keyword-parameters-p (generic function)
:allow-other-keys-p
allow-other-keys-p (generic function)
:keyword-parameters
keyword-parameters (generic function)
dispatch.lisp (file)
dispatch-rule (class)
:position
parameter-position (generic function)
:type
parameter-type (generic function)
lambda-lists.lisp (file)
parameter (class)
specialized-required-parameter (class)
dispatch.lisp (file)
dispatch-rule (class)
:type
rest-objects-rule-type (generic function)
:position
rest-objects-rule-position (generic function)
lambda-lists.lisp (file)
parameter (class)
specialized-rest-parameter (class)
dispatch-fixed-arity.lisp (file)
standard-object (class)
print-object (method)
:specializations
:arity
lambda-lists.lisp (file)
parameters (class)
standard-store.lisp (file)
funcallable-standard-object (class)
:name
specialization-name (generic function)
:lambda-list
specialization-lambda-list (generic function)
:value-type
specialization-value-type (generic function)
:parameters
specialization-parameters (generic function)
:documentation
specialization-documentation (generic function)
(setf specialization-documentation) (generic function)
:function
specialization-function (generic function)
:expand-function
specialization-expand-function (generic function)
Initarg | Value |
---|---|
:name | nil |
:expand-function | nil |
:documentation | nil |
standard-store.lisp (file)
funcallable-standard-class (class)
validate-superclass (method)
standard-store.lisp (file)
funcallable-standard-object (class)
:name
store-name (generic function)
:lambda-list
(error "a store lambda list must be supplied.")
store-lambda-list (generic function)
:parameters
store-parameters (generic function)
:documentation
store-documentation (generic function)
(setf store-documentation) (generic function)
:specializations
store-specializations (generic function)
:specialization-class
store-specialization-class (generic function)
Initarg | Value |
---|---|
:name | nil |
:documentation | nil |
:specializations | nil |
:specialization-class | (find-class (quote specialization-store:standard-specialization)) |
standard-store.lisp (file)
funcallable-standard-class (class)
lambda-lists.lisp (file)
parameters (class)
Previous: Exported classes, Up: Exported definitions [Contents][Index]
lambda-lists.lisp (file)
Previous: Exported definitions, Up: Definitions [Contents][Index]
• Internal special variables | ||
• Internal functions | ||
• Internal generic functions | ||
• Internal conditions | ||
• Internal classes | ||
• Internal types |
Next: Internal functions, Previous: Internal definitions, Up: Internal definitions [Contents][Index]
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
Next: Internal generic functions, Previous: Internal special variables, Up: Internal definitions [Contents][Index]
standard-store.lisp (file)
protocols.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
dispatch-fixed-arity.lisp (file)
protocols.lisp (file)
dispatch.lisp (file)
dispatch-variable-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch.lisp (file)
features.lisp (file)
features.lisp (file)
lambda-lists.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-variable-arity.lisp (file)
features.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
What is the known type of the INDEX’th argument?
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
dispatch-variable-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
dispatch-fixed-arity.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
dispatch-variable-arity.lisp (file)
dispatch-variable-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
lambda-lists.lisp (file)
dispatch.lisp (file)
dispatch-fixed-arity.lisp (file)
dispatch-variable-arity.lisp (file)
dispatch-fixed-arity.lisp (file)
features.lisp (file)
common.lisp (file)
Next: Internal conditions, Previous: Internal functions, Up: Internal definitions [Contents][Index]
lambda-lists.lisp (file)
automatically generated reader method
standard-store.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
standard-store.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
protocols.lisp (file)
standard-store.lisp (file)
protocols.lisp (file)
dispatch.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
lambda-lists.lisp (file)
standard-store.lisp (file)
automatically generated reader method
standard-store.lisp (file)
automatically generated reader method
standard-store.lisp (file)
Next: Internal classes, Previous: Internal generic functions, Up: Internal definitions [Contents][Index]
protocols.lisp (file)
store-error (condition)
Next: Internal types, Previous: Internal conditions, Up: Internal definitions [Contents][Index]
The arity of the specialization is less than count.
dispatch.lisp (file)
dispatch-rule (class)
:count
argument-count (generic function)
dispatch.lisp (file)
rule (class)
standard-store.lisp (file)
standard-object (class)
generate-code (method)
:store
:fail
Initarg | Value |
---|---|
:fail | (gensym "fail") |
standard-store.lisp (file)
positional-environment (class)
:keywords
:args
:allow-others-p
Initarg | Value |
---|---|
:args | (gensym "args") |
dispatch-fixed-arity.lisp (file)
standard-object (class)
print-object (method)
simple-vector
:set
standard-store.lisp (file)
standard-object (class)
:positional
dispatch.lisp (file)
standard-object (class)
dispatch-rule (class)
negate-rule-if-possible (method)
lambda-lists.lisp (file)
keyword-parameter (class)
parameter-type (method)
lambda-lists.lisp (file)
required-parameter (class)
:type
parameter-type (generic function)
lambda-lists.lisp (file)
rest-parameter (class)
:each-type
parameter-each-type (generic function)
standard-store.lisp (file)
function-environment (class)
:form
:environment
:completed-types
Initarg | Value |
---|---|
:form | (gensym "form") |
:environment | (gensym "env") |
:completed-types | (gensym "completed-types") |
standard-store.lisp (file)
function-environment (class)
standard-store.lisp (file)
positional-environment (class)
:argument-count
:args
Initarg | Value |
---|---|
:argument-count | (gensym "argument-count") |
:args | (gensym "args") |
lambda-lists.lisp (file)
parameter (class)
:dependencies
parameter-dependencies (generic function)
:init-form
parameter-init-form (generic function)
:varp
parameter-varp (generic function)
Previous: Internal classes, Up: Internal definitions [Contents][Index]
dispatch.lisp (file)
Previous: Definitions, Up: Top [Contents][Index]
• Concept index | ||
• Function index | ||
• Variable index | ||
• Data type index |
Next: Function index, Previous: Indexes, Up: Indexes [Contents][Index]
Jump to: | F L M S |
---|
Jump to: | F L M S |
---|
Next: Variable index, Previous: Concept index, Up: Indexes [Contents][Index]
Jump to: | %
(
A B C D E F G I K L M N O P R S T U V |
---|
Jump to: | %
(
A B C D E F G I K L M N O P R S T U V |
---|
Next: Data type index, Previous: Function index, Up: Indexes [Contents][Index]
Jump to: | %
*
A C D E F I K L M N O P R S T V |
---|
Jump to: | %
*
A C D E F I K L M N O P R S T V |
---|
Previous: Variable index, Up: Indexes [Contents][Index]
Jump to: | A C D E F I K L N O P R S T V |
---|
Jump to: | A C D E F I K L N O P R S T V |
---|