The com.clearly-useful.protocols Reference Manual
Table of Contents
The com.clearly-useful.protocols Reference Manual
This is the com.clearly-useful.protocols Reference Manual, version 0.1.2,
generated automatically by Declt version 3.0 "Montgomery Scott"
on Tue Dec 22 13:09:33 2020 GMT+0.
1 Introduction
simple clojure-style protocols for common lisp
see test.lisp for simple (if somewhat silly) examples.
real usage can be seen in the com.clearly-useful.generic-sequence-interface
system.
* overview:
this system provides a simple implementation of protcols for common
lisp inspired by clojure. the interface to this package is
intentionally minimal and exports four symbols:
** defprotocol
/macro/
defprotocol name [docstring] (option | method-declaration)+
where name is a symbol
docstring a docstring
option is one of:
(:require protocol)
(:base-method ...)
(:eponymous-method t | nil)
(:eponymous-generic t | nil)
method-declaration is
a simple lambda list with
an optional docstring (see below)
of the options, :require is the most straightforward.
the others are a little funky, but have come in handy
for me in practice.
options:
- :require other-protocol
this option will check at compile time
that any object implementing this protocol
already implements other-protocol
- :eponymous-generic bool
when true, defprotocol will generate a generic
function of one argument with the same name as
the protocol. default is nil.
- :eponymous-method bool
when true, extend-type will generate a method
with the same name as the protocol specializing
on the implementing type. the method generated
functions as identity. this is just a convenience
option. useage implies (:eponymous-generic t)
defaults to nil.
- :base-method ((param) body)
when supplied, generates an unspecialized method
with the same name as the protocol, with the form
(:method (param) body). implies (:eponymous-generic t)
defaults to nil.
example:
(defprotocol printable
"an object which can be printed my way"
(:base-method (object) (error "oops!"))
(:require stringable)
(my-package::print-special (object stream) "print object to stream"))
this results in the following:
- definition of the generic function printable, which will
function as identity for any object implementing this
protocol. any object which does not implement this protocol
will raise the error "oops!" had a :base-method not been
supplied, a generic not-implemented error would be raised by
objects not implementing the protocol.
- a requirement that any object implementing this protocol
already implement stringable
- definition of the generic function printable-p which tests
whether an object implements the protocol printable
- definition of the type printable, which satisfies printable-p
with the documentation "an object which can be printed my way"
- definition of the generic function my-package::print-special
with the documentation "print object to stream"
note that the lambda list for a protocol method is restricted to
symbols, and may not contain &optional &key
&allow-other-keys. this is to simplify the validation of protocol
definitions & implementations at compile time, and may be changed
in the future.
note also that methods defined with extend-type only specialize on
their first parameter, which is of the type implementing the
protocol (see below). this is in line with clojure's
implementation, but may not be neccessary for common lisp, as
methods are more flexible. a more complex style of definition &
implementation of protocols may be implemented in the future to
take full advantage of generic function dispatch, but the current
simple implementation will continue to work.
** extend-type
/macro/
extend-type class-name [protocol-name, method-definition+]+
example:
(extend-type string
foo
(bar (self other) (frob other self))
quux
(svelte (self) etc))
performs simple validation at compile time.
this will result in method definitions for the generic functions
bar and svelte specialized on class string for the first parameter.
lambda-lists for method implementations in extend-type may only contain
symbols, and do not support &optional &key &allow-other-keys. this
is a limitation of the current implementation that may change in
the future. they do, however allow the use of the special symbol _
to indicate ignored parameters. the symbol _ may be used multiple
times in an implementation, e.g.
(extend-type frobnicator
music:instrument
(music:play-with-orchestra (_ _ _)
;;frobnicators only know one note.
(music:play-note :b-flat 1.0)))
** protocol-extends-class-p
/function/
protocol-extends-class-p protocol-name class-or-class-name
true if class-or-class-name has implemented the protcol
named by protocol-name
** class-implements-protocol-p
/function/
class-implements-protocol-p class-or-class-name protocol-name
same as above.
** notes & todo's
there is currently no way to undefine a protocol, as I don't know
of a portable way to undefine types in common lisp.
if you redefine a protocol in the current implementation, it does
not invalidate existing implementors of the protocol, which would
be helpful. This will be fixed.
*** TODO fix protocol redefinition
*** TODO add extend-protocol
*** TODO [#A] add ability to extend objects as well as types
*** DONE error messages are less helpful than they could be at the moment.
*** TODO migrate to a proper test framework
2 Systems
The main system appears first, followed by any subsystem dependency.
2.1 com.clearly-useful.protocols
- Author
Jason Aeschliman <j.aeschliman@gmail.com>
- License
revised BSD
- Description
Simple protocol implementation for Common Lisp inspired by clojure.
- Version
0.1.2
- Dependency
iterate
- Source
com.clearly-useful.protocols.asd (file)
- Components
-
3 Files
Files are sorted by type and then listed depth-first from the systems
components trees.
3.1 Lisp
3.1.1 com.clearly-useful.protocols.asd
- Location
com.clearly-useful.protocols.asd
- Systems
com.clearly-useful.protocols (system)
3.1.2 com.clearly-useful.protocols/package.lisp
- Parent
com.clearly-useful.protocols (system)
- Location
package.lisp
- Packages
com.clearly-useful.protocols
3.1.3 com.clearly-useful.protocols/compile-time.lisp
- Dependency
package.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
compile-time.lisp
- Internal Definitions
-
3.1.4 com.clearly-useful.protocols/load-time.lisp
- Dependency
compile-time.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
load-time.lisp
- Internal Definitions
-
3.1.5 com.clearly-useful.protocols/validation.lisp
- Dependency
load-time.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
validation.lisp
- Internal Definitions
-
3.1.6 com.clearly-useful.protocols/parse.lisp
- Dependency
validation.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
parse.lisp
- Internal Definitions
-
3.1.7 com.clearly-useful.protocols/codegen.lisp
- Dependency
parse.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
codegen.lisp
- Internal Definitions
-
3.1.8 com.clearly-useful.protocols/interface.lisp
- Dependency
codegen.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
interface.lisp
3.1.9 com.clearly-useful.protocols/protocols.lisp
- Dependency
interface.lisp (file)
- Parent
com.clearly-useful.protocols (system)
- Location
protocols.lisp
- Exported Definitions
-
- Internal Definitions
-
4 Packages
Packages are listed by definition order.
4.1 com.clearly-useful.protocols
- Source
package.lisp (file)
- Use List
-
- Exported Definitions
-
- Internal Definitions
-
5 Definitions
Definitions are sorted by export status, category, package, and then by
lexicographic order.
5.1 Exported definitions
5.1.1 Macros
- Macro: defprotocol NAME &body METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Macro: extend-object OBJECT &body METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Macro: extend-type CLASS &body METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Macro: reify &body METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
5.1.2 Functions
- Function: class-implements-protocol-p CLASS PROTOCOL
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Function: protocol-extends-class-p PROTOCOL CLASS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
5.2 Internal definitions
5.2.1 Special variables
- Special Variable: %protocol-compilation-notes%
-
- Package
com.clearly-useful.protocols
- Source
compile-time.lisp (file)
- Special Variable: %protocols%
-
- Package
com.clearly-useful.protocols
- Source
load-time.lisp (file)
5.2.2 Macros
- Macro: all &body BODY
-
(all x1 y1 x2 y2 ...) -> (and (or x1 y1) (or x2 y2) ...)
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
5.2.3 Functions
- Function: %bool O
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: %build-protocol-object PROTOCOL METHODS
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: %compile-time-implements? TYPENAME PROTOCOLNAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: %defprotocol NAME BODY
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: %ensure-protocol-compilation-note NAME
-
- Package
com.clearly-useful.protocols
- Source
compile-time.lisp (file)
- Function: %extend-type CLASS METHODS
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: %find-protocol-compilation-note NAME
-
- Function: (setf %find-protocol-compilation-note) VALUE NAME
-
- Package
com.clearly-useful.protocols
- Source
compile-time.lisp (file)
- Function: %implement-protocol-for-object OBJ METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Function: %implements? TYPENAME PROTOCOLNAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: copy-protocol-body INSTANCE
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: ensure-protocol NAME
-
- Package
com.clearly-useful.protocols
- Source
load-time.lisp (file)
- Function: find-protocol NAME
-
- Function: (setf find-protocol) VALUE NAME
-
- Package
com.clearly-useful.protocols
- Source
load-time.lisp (file)
- Function: generate-compile-time-requires REQUIRES CLASS NAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: generate-implements? SPECIALIZER NAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: generate-requires REQUIRES CLASS NAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: make-protocol-body &key (PROPERTIES PROPERTIES) (METHODS METHODS)
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: method-implementations NAME PROTOCOL SPECIALIZER METHODS
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Function: parse-protocol-body METHODS
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: partition-methods LIST
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: protocol-body-methods INSTANCE
-
- Function: (setf protocol-body-methods) VALUE INSTANCE
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: protocol-body-p OBJECT
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: protocol-body-properties INSTANCE
-
- Function: (setf protocol-body-properties) VALUE INSTANCE
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Function: protocol-definition PROTOCOL UNPARSED-BODY
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-definition-defgeneric-forms PROTOCOL-NAME METHODS PROPERTIES
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-definition-eponymous-generic NAME PROPERTIES
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-deftype NAME DOCUMENTATION
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-implementation PROTOCOL THING METHODS
-
protocol, implementation type name, method list
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-implementation-base-method PROTOCOL TYPE
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-implementation-compile-time PROTOCOL TYPE METHODS
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-implementation-register PROTOCOL SPECIALIZER
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-test-function NAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: protocol-test-name NAME
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: transform-arglist ARGLIST SPECIALIZER
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: transform-method SPEC SPECIALIZER
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: transform-method-to-defgeneric PROTOCOL-NAME METHOD
-
- Package
com.clearly-useful.protocols
- Source
codegen.lisp (file)
- Function: valid-protocol-lambda-list-p PARAMS
-
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
- Function: valid-protocol-method-name-p THING
-
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
- Function: validate-defprotocol-option LIST
-
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
- Function: validate-protocol-definition-methods NAME METHODS
-
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
- Function: validate-protocol-implementation-methods PROTOCOL TYPE METHODS
-
- Package
com.clearly-useful.protocols
- Source
validation.lisp (file)
5.2.4 Generic functions
- Generic Function: implements-protocol? OBJECT PROTOCOL
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Methods
- Method: implements-protocol? OBJECT (NAME symbol)
-
- Method: implements-protocol? OBJECT (PROTOCOL protocol)
-
- Generic Function: methods OBJECT
-
- Generic Function: (setf methods) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: methods (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf methods) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: methods (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf methods) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
- Generic Function: name OBJECT
-
- Generic Function: (setf name) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: name (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf name) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: name (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf name) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
- Generic Function: properties OBJECT
-
- Generic Function: (setf properties) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: properties (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf properties) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: properties (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf properties) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
- Generic Function: protocol-documentation OBJECT
-
- Generic Function: (setf protocol-documentation) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: protocol-documentation (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf protocol-documentation) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: protocol-documentation (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf protocol-documentation) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
- Generic Function: protocol-includes-generic-pun OBJECT
-
- Generic Function: (setf protocol-includes-generic-pun) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: protocol-includes-generic-pun (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf protocol-includes-generic-pun) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: protocol-includes-generic-pun (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf protocol-includes-generic-pun) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
- Generic Function: protocol-includes-method-pun OBJECT
-
- Generic Function: (setf protocol-includes-method-pun) NEW-VALUE OBJECT
-
- Package
com.clearly-useful.protocols
- Methods
- Method: protocol-includes-method-pun (PROTOCOL protocol)
-
automatically generated reader method
- Source
load-time.lisp (file)
- Method: (setf protocol-includes-method-pun) NEW-VALUE (PROTOCOL protocol)
-
automatically generated writer method
- Source
load-time.lisp (file)
- Method: protocol-includes-method-pun (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated reader method
- Source
compile-time.lisp (file)
- Method: (setf protocol-includes-method-pun) NEW-VALUE (%PROTOCOL-COMPILATION-NOTE %protocol-compilation-note)
-
automatically generated writer method
- Source
compile-time.lisp (file)
5.2.5 Structures
- Structure: protocol-body ()
-
- Package
com.clearly-useful.protocols
- Source
parse.lisp (file)
- Direct superclasses
structure-object (structure)
- Direct slots
- Slot: properties
-
- Readers
protocol-body-properties (function)
- Writers
(setf protocol-body-properties) (function)
- Slot: methods
-
- Readers
protocol-body-methods (function)
- Writers
(setf protocol-body-methods) (function)
5.2.6 Classes
- Class: %protocol-compilation-note ()
-
- Package
com.clearly-useful.protocols
- Source
compile-time.lisp (file)
- Direct superclasses
standard-object (class)
- Direct methods
-
- Direct slots
- Slot: name
-
- Initargs
:name
- Readers
name (generic function)
- Writers
(setf name) (generic function)
- Slot: methods
-
- Initform
(list)
- Readers
methods (generic function)
- Writers
(setf methods) (generic function)
- Slot: properties
-
- Readers
properties (generic function)
- Writers
(setf properties) (generic function)
- Slot: documentation
-
- Readers
protocol-documentation (generic function)
- Writers
(setf protocol-documentation) (generic function)
- Slot: includes-generic-pun
-
- Readers
protocol-includes-generic-pun (generic function)
- Writers
(setf protocol-includes-generic-pun) (generic function)
- Slot: includes-method-pun
-
- Readers
protocol-includes-method-pun (generic function)
- Writers
(setf protocol-includes-method-pun) (generic function)
- Slot: implementors
-
- Initform
(list)
- Class: %reified% ()
-
- Package
com.clearly-useful.protocols
- Source
protocols.lisp (file)
- Direct superclasses
standard-object (class)
- Class: protocol ()
-
- Package
com.clearly-useful.protocols
- Source
load-time.lisp (file)
- Direct superclasses
standard-object (class)
- Direct methods
-
- Direct slots
- Slot: name
-
- Initargs
:name
- Readers
name (generic function)
- Writers
(setf name) (generic function)
- Slot: methods
-
- Initform
(list)
- Readers
methods (generic function)
- Writers
(setf methods) (generic function)
- Slot: properties
-
- Readers
properties (generic function)
- Writers
(setf properties) (generic function)
- Slot: documentation
-
- Readers
protocol-documentation (generic function)
- Writers
(setf protocol-documentation) (generic function)
- Slot: includes-generic-pun
-
- Readers
protocol-includes-generic-pun (generic function)
- Writers
(setf protocol-includes-generic-pun) (generic function)
- Slot: includes-method-pun
-
- Readers
protocol-includes-method-pun (generic function)
- Writers
(setf protocol-includes-method-pun) (generic function)
- Slot: implementors
-
- Initform
(list)
Appendix A Indexes
A.1 Concepts
| Index Entry | | Section |
|
C | | |
| com.clearly-useful.protocols.asd: | | The com․clearly-useful․protocols․asd file |
| com.clearly-useful.protocols/codegen.lisp: | | The com․clearly-useful․protocols/codegen․lisp file |
| com.clearly-useful.protocols/compile-time.lisp: | | The com․clearly-useful․protocols/compile-time․lisp file |
| com.clearly-useful.protocols/interface.lisp: | | The com․clearly-useful․protocols/interface․lisp file |
| com.clearly-useful.protocols/load-time.lisp: | | The com․clearly-useful․protocols/load-time․lisp file |
| com.clearly-useful.protocols/package.lisp: | | The com․clearly-useful․protocols/package․lisp file |
| com.clearly-useful.protocols/parse.lisp: | | The com․clearly-useful․protocols/parse․lisp file |
| com.clearly-useful.protocols/protocols.lisp: | | The com․clearly-useful․protocols/protocols․lisp file |
| com.clearly-useful.protocols/validation.lisp: | | The com․clearly-useful․protocols/validation․lisp file |
|
F | | |
| File, Lisp, com.clearly-useful.protocols.asd: | | The com․clearly-useful․protocols․asd file |
| File, Lisp, com.clearly-useful.protocols/codegen.lisp: | | The com․clearly-useful․protocols/codegen․lisp file |
| File, Lisp, com.clearly-useful.protocols/compile-time.lisp: | | The com․clearly-useful․protocols/compile-time․lisp file |
| File, Lisp, com.clearly-useful.protocols/interface.lisp: | | The com․clearly-useful․protocols/interface․lisp file |
| File, Lisp, com.clearly-useful.protocols/load-time.lisp: | | The com․clearly-useful․protocols/load-time․lisp file |
| File, Lisp, com.clearly-useful.protocols/package.lisp: | | The com․clearly-useful․protocols/package․lisp file |
| File, Lisp, com.clearly-useful.protocols/parse.lisp: | | The com․clearly-useful․protocols/parse․lisp file |
| File, Lisp, com.clearly-useful.protocols/protocols.lisp: | | The com․clearly-useful․protocols/protocols․lisp file |
| File, Lisp, com.clearly-useful.protocols/validation.lisp: | | The com․clearly-useful․protocols/validation․lisp file |
|
L | | |
| Lisp File, com.clearly-useful.protocols.asd: | | The com․clearly-useful․protocols․asd file |
| Lisp File, com.clearly-useful.protocols/codegen.lisp: | | The com․clearly-useful․protocols/codegen․lisp file |
| Lisp File, com.clearly-useful.protocols/compile-time.lisp: | | The com․clearly-useful․protocols/compile-time․lisp file |
| Lisp File, com.clearly-useful.protocols/interface.lisp: | | The com․clearly-useful․protocols/interface․lisp file |
| Lisp File, com.clearly-useful.protocols/load-time.lisp: | | The com․clearly-useful․protocols/load-time․lisp file |
| Lisp File, com.clearly-useful.protocols/package.lisp: | | The com․clearly-useful․protocols/package․lisp file |
| Lisp File, com.clearly-useful.protocols/parse.lisp: | | The com․clearly-useful․protocols/parse․lisp file |
| Lisp File, com.clearly-useful.protocols/protocols.lisp: | | The com․clearly-useful․protocols/protocols․lisp file |
| Lisp File, com.clearly-useful.protocols/validation.lisp: | | The com․clearly-useful․protocols/validation․lisp file |
|
A.2 Functions
| Index Entry | | Section |
|
% | | |
| %bool : | | Internal functions |
| %build-protocol-object : | | Internal functions |
| %compile-time-implements? : | | Internal functions |
| %defprotocol : | | Internal functions |
| %ensure-protocol-compilation-note : | | Internal functions |
| %extend-type : | | Internal functions |
| %find-protocol-compilation-note : | | Internal functions |
| %implement-protocol-for-object : | | Internal functions |
| %implements? : | | Internal functions |
|
( | | |
| (setf %find-protocol-compilation-note) : | | Internal functions |
| (setf find-protocol) : | | Internal functions |
| (setf methods) : | | Internal generic functions |
| (setf methods) : | | Internal generic functions |
| (setf methods) : | | Internal generic functions |
| (setf name) : | | Internal generic functions |
| (setf name) : | | Internal generic functions |
| (setf name) : | | Internal generic functions |
| (setf properties) : | | Internal generic functions |
| (setf properties) : | | Internal generic functions |
| (setf properties) : | | Internal generic functions |
| (setf protocol-body-methods) : | | Internal functions |
| (setf protocol-body-properties) : | | Internal functions |
| (setf protocol-documentation) : | | Internal generic functions |
| (setf protocol-documentation) : | | Internal generic functions |
| (setf protocol-documentation) : | | Internal generic functions |
| (setf protocol-includes-generic-pun) : | | Internal generic functions |
| (setf protocol-includes-generic-pun) : | | Internal generic functions |
| (setf protocol-includes-generic-pun) : | | Internal generic functions |
| (setf protocol-includes-method-pun) : | | Internal generic functions |
| (setf protocol-includes-method-pun) : | | Internal generic functions |
| (setf protocol-includes-method-pun) : | | Internal generic functions |
|
A | | |
| all : | | Internal macros |
|
C | | |
| class-implements-protocol-p : | | Exported functions |
| copy-protocol-body : | | Internal functions |
|
D | | |
| defprotocol : | | Exported macros |
|
E | | |
| ensure-protocol : | | Internal functions |
| extend-object : | | Exported macros |
| extend-type : | | Exported macros |
|
F | | |
| find-protocol : | | Internal functions |
| Function, %bool : | | Internal functions |
| Function, %build-protocol-object : | | Internal functions |
| Function, %compile-time-implements? : | | Internal functions |
| Function, %defprotocol : | | Internal functions |
| Function, %ensure-protocol-compilation-note : | | Internal functions |
| Function, %extend-type : | | Internal functions |
| Function, %find-protocol-compilation-note : | | Internal functions |
| Function, %implement-protocol-for-object : | | Internal functions |
| Function, %implements? : | | Internal functions |
| Function, (setf %find-protocol-compilation-note) : | | Internal functions |
| Function, (setf find-protocol) : | | Internal functions |
| Function, (setf protocol-body-methods) : | | Internal functions |
| Function, (setf protocol-body-properties) : | | Internal functions |
| Function, class-implements-protocol-p : | | Exported functions |
| Function, copy-protocol-body : | | Internal functions |
| Function, ensure-protocol : | | Internal functions |
| Function, find-protocol : | | Internal functions |
| Function, generate-compile-time-requires : | | Internal functions |
| Function, generate-implements? : | | Internal functions |
| Function, generate-requires : | | Internal functions |
| Function, make-protocol-body : | | Internal functions |
| Function, method-implementations : | | Internal functions |
| Function, parse-protocol-body : | | Internal functions |
| Function, partition-methods : | | Internal functions |
| Function, protocol-body-methods : | | Internal functions |
| Function, protocol-body-p : | | Internal functions |
| Function, protocol-body-properties : | | Internal functions |
| Function, protocol-definition : | | Internal functions |
| Function, protocol-definition-defgeneric-forms : | | Internal functions |
| Function, protocol-definition-eponymous-generic : | | Internal functions |
| Function, protocol-deftype : | | Internal functions |
| Function, protocol-extends-class-p : | | Exported functions |
| Function, protocol-implementation : | | Internal functions |
| Function, protocol-implementation-base-method : | | Internal functions |
| Function, protocol-implementation-compile-time : | | Internal functions |
| Function, protocol-implementation-register : | | Internal functions |
| Function, protocol-test-function : | | Internal functions |
| Function, protocol-test-name : | | Internal functions |
| Function, transform-arglist : | | Internal functions |
| Function, transform-method : | | Internal functions |
| Function, transform-method-to-defgeneric : | | Internal functions |
| Function, valid-protocol-lambda-list-p : | | Internal functions |
| Function, valid-protocol-method-name-p : | | Internal functions |
| Function, validate-defprotocol-option : | | Internal functions |
| Function, validate-protocol-definition-methods : | | Internal functions |
| Function, validate-protocol-implementation-methods : | | Internal functions |
|
G | | |
| generate-compile-time-requires : | | Internal functions |
| generate-implements? : | | Internal functions |
| generate-requires : | | Internal functions |
| Generic Function, (setf methods) : | | Internal generic functions |
| Generic Function, (setf name) : | | Internal generic functions |
| Generic Function, (setf properties) : | | Internal generic functions |
| Generic Function, (setf protocol-documentation) : | | Internal generic functions |
| Generic Function, (setf protocol-includes-generic-pun) : | | Internal generic functions |
| Generic Function, (setf protocol-includes-method-pun) : | | Internal generic functions |
| Generic Function, implements-protocol? : | | Internal generic functions |
| Generic Function, methods : | | Internal generic functions |
| Generic Function, name : | | Internal generic functions |
| Generic Function, properties : | | Internal generic functions |
| Generic Function, protocol-documentation : | | Internal generic functions |
| Generic Function, protocol-includes-generic-pun : | | Internal generic functions |
| Generic Function, protocol-includes-method-pun : | | Internal generic functions |
|
I | | |
| implements-protocol? : | | Internal generic functions |
| implements-protocol? : | | Internal generic functions |
| implements-protocol? : | | Internal generic functions |
|
M | | |
| Macro, all : | | Internal macros |
| Macro, defprotocol : | | Exported macros |
| Macro, extend-object : | | Exported macros |
| Macro, extend-type : | | Exported macros |
| Macro, reify : | | Exported macros |
| make-protocol-body : | | Internal functions |
| Method, (setf methods) : | | Internal generic functions |
| Method, (setf methods) : | | Internal generic functions |
| Method, (setf name) : | | Internal generic functions |
| Method, (setf name) : | | Internal generic functions |
| Method, (setf properties) : | | Internal generic functions |
| Method, (setf properties) : | | Internal generic functions |
| Method, (setf protocol-documentation) : | | Internal generic functions |
| Method, (setf protocol-documentation) : | | Internal generic functions |
| Method, (setf protocol-includes-generic-pun) : | | Internal generic functions |
| Method, (setf protocol-includes-generic-pun) : | | Internal generic functions |
| Method, (setf protocol-includes-method-pun) : | | Internal generic functions |
| Method, (setf protocol-includes-method-pun) : | | Internal generic functions |
| Method, implements-protocol? : | | Internal generic functions |
| Method, implements-protocol? : | | Internal generic functions |
| Method, methods : | | Internal generic functions |
| Method, methods : | | Internal generic functions |
| Method, name : | | Internal generic functions |
| Method, name : | | Internal generic functions |
| Method, properties : | | Internal generic functions |
| Method, properties : | | Internal generic functions |
| Method, protocol-documentation : | | Internal generic functions |
| Method, protocol-documentation : | | Internal generic functions |
| Method, protocol-includes-generic-pun : | | Internal generic functions |
| Method, protocol-includes-generic-pun : | | Internal generic functions |
| Method, protocol-includes-method-pun : | | Internal generic functions |
| Method, protocol-includes-method-pun : | | Internal generic functions |
| method-implementations : | | Internal functions |
| methods : | | Internal generic functions |
| methods : | | Internal generic functions |
| methods : | | Internal generic functions |
|
N | | |
| name : | | Internal generic functions |
| name : | | Internal generic functions |
| name : | | Internal generic functions |
|
P | | |
| parse-protocol-body : | | Internal functions |
| partition-methods : | | Internal functions |
| properties : | | Internal generic functions |
| properties : | | Internal generic functions |
| properties : | | Internal generic functions |
| protocol-body-methods : | | Internal functions |
| protocol-body-p : | | Internal functions |
| protocol-body-properties : | | Internal functions |
| protocol-definition : | | Internal functions |
| protocol-definition-defgeneric-forms : | | Internal functions |
| protocol-definition-eponymous-generic : | | Internal functions |
| protocol-deftype : | | Internal functions |
| protocol-documentation : | | Internal generic functions |
| protocol-documentation : | | Internal generic functions |
| protocol-documentation : | | Internal generic functions |
| protocol-extends-class-p : | | Exported functions |
| protocol-implementation : | | Internal functions |
| protocol-implementation-base-method : | | Internal functions |
| protocol-implementation-compile-time : | | Internal functions |
| protocol-implementation-register : | | Internal functions |
| protocol-includes-generic-pun : | | Internal generic functions |
| protocol-includes-generic-pun : | | Internal generic functions |
| protocol-includes-generic-pun : | | Internal generic functions |
| protocol-includes-method-pun : | | Internal generic functions |
| protocol-includes-method-pun : | | Internal generic functions |
| protocol-includes-method-pun : | | Internal generic functions |
| protocol-test-function : | | Internal functions |
| protocol-test-name : | | Internal functions |
|
R | | |
| reify : | | Exported macros |
|
T | | |
| transform-arglist : | | Internal functions |
| transform-method : | | Internal functions |
| transform-method-to-defgeneric : | | Internal functions |
|
V | | |
| valid-protocol-lambda-list-p : | | Internal functions |
| valid-protocol-method-name-p : | | Internal functions |
| validate-defprotocol-option : | | Internal functions |
| validate-protocol-definition-methods : | | Internal functions |
| validate-protocol-implementation-methods : | | Internal functions |
|
A.3 Variables
| Index Entry | | Section |
|
% | | |
| %protocol-compilation-notes% : | | Internal special variables |
| %protocols% : | | Internal special variables |
|
D | | |
| documentation : | | Internal classes |
| documentation : | | Internal classes |
|
I | | |
| implementors : | | Internal classes |
| implementors : | | Internal classes |
| includes-generic-pun : | | Internal classes |
| includes-generic-pun : | | Internal classes |
| includes-method-pun : | | Internal classes |
| includes-method-pun : | | Internal classes |
|
M | | |
| methods : | | Internal structures |
| methods : | | Internal classes |
| methods : | | Internal classes |
|
N | | |
| name : | | Internal classes |
| name : | | Internal classes |
|
P | | |
| properties : | | Internal structures |
| properties : | | Internal classes |
| properties : | | Internal classes |
|
S | | |
| Slot, documentation : | | Internal classes |
| Slot, documentation : | | Internal classes |
| Slot, implementors : | | Internal classes |
| Slot, implementors : | | Internal classes |
| Slot, includes-generic-pun : | | Internal classes |
| Slot, includes-generic-pun : | | Internal classes |
| Slot, includes-method-pun : | | Internal classes |
| Slot, includes-method-pun : | | Internal classes |
| Slot, methods : | | Internal structures |
| Slot, methods : | | Internal classes |
| Slot, methods : | | Internal classes |
| Slot, name : | | Internal classes |
| Slot, name : | | Internal classes |
| Slot, properties : | | Internal structures |
| Slot, properties : | | Internal classes |
| Slot, properties : | | Internal classes |
| Special Variable, %protocol-compilation-notes% : | | Internal special variables |
| Special Variable, %protocols% : | | Internal special variables |
|
A.4 Data types