The fast-generic-functions Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The fast-generic-functions Reference Manual

This is the fast-generic-functions Reference Manual, generated automatically by Declt version 3.0 "Montgomery Scott" on Wed Nov 04 13:26:46 2020 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

#+TITLE: Fast Generic Functions

This library introduces /fast generic functions/, i.e., functions that
behave just like regular generic functions, except that the can be sealed
on certain domains.  If the compiler can then statically detect that the
arguments to a fast generic function fall within such a domain, it will
perform a variety of optimizations.

* Example 1 - Generic Find

This example illustrates how one can define a (hopefully) fast method
for finding items in a sequence.

The first step is to define a generic function whose generic function class
is =fast-generic-function=.

#+BEGIN_SRC lisp
(defgeneric generic-find (item sequence &key test)
  (:generic-function-class fast-generic-functions:fast-generic-function))
#+END_SRC

Once this definition is loaded (and only then, so you shouldn't put the
next snippets in the same file as the defgeneric form), it is possible to
add methods to it in the usual way.

#+BEGIN_SRC lisp
(defmethod generic-find (item (list list) &key (test #'eql))
  (and (member item list :test test)
       t))

(defmethod generic-find (item (vector vector) &key (test #'eql))
  (cl:find item vector :test test))

(seal-domain #'generic-find '(t list))
(seal-domain #'generic-find '(t vector))
#+END_SRC

The novelty are the two calls to =seal-domain=.  These calls seal the
specified part of the function domain, and at the same time install
compiler optimizations for calls to that generic function.

Whenever the compiler can detect that the arguments of a call to a fast
generic function fall within such a sealed domain, the entire call can be
optimized in a variety of ways.  By default, the call to the fast generic
function's discriminating function will be replaced by a direct call to a
custom effective method function.  This means that there will be zero
overhead for determining the generic function's behavior.  The following
example illustrates this:

#+BEGIN_SRC lisp
(defun small-prime-p (x)
  (generic-find x '(2 3 5 7 11)))

;; The call to GENERIC-FIND should have been replaced by a direct call to
;; the appropriate effective method function.
(disassemble #'small-prime-p)
#+END_SRC

It is even possible to inline the entire effective method into the call
site.  However, to avoid code bloat, this feature is disabled by default.
To enable it, each method withing the sealed domain must contain an
appropriate declaration, as shown in the next example.

* Example 2 - Extensible Number Functions

#+BEGIN_SRC lisp
(defgeneric binary-+ (x y)
  (:generic-function-class fast-generic-function))

(defmethod binary-+ ((x number) (y number))
  (declare (method-properties inlineable))
  (+ x y))

(seal-domain #'binary-+ '(number number))
#+END_SRC

It is easy to generalize such a binary function to a function that accepts
any number of arguments:

#+BEGIN_SRC lisp
(defun generic-+ (&rest things)
  (cond ((null things) 0)
        ((null (rest things)) (first things))
        (t (reduce #'binary-+ things))))

(define-compiler-macro generic-+ (&rest things)
  (cond ((null things) 0)
        ((null (rest things)) (first things))
        (t (reduce (lambda (a b) `(binary-+ ,a ,b)) things))))
#+END_SRC

With all this in place, we can use our =generic-+= function much like
Common Lisp's built-in =+= without worrying about performance.  The next
code snippet shows that in fact, each call to =generic-+= is inlined and
turned into a single =addss= instruction.

#+BEGIN_SRC lisp
(disassemble
 (compile nil
   '(lambda (x y z)
     (declare (single-float x y z))
     (generic-+ x y z))))

;; disassembly for (lambda (x y z))
;; Size: 38 bytes. Origin: #x52FD9354
;; 54:       498B4510         mov RAX, [R13+16]
;; 58:       488945F8         mov [RBP-8], RAX
;; 5C:       0F28CC           movaps XMM1, XMM4
;; 5F:       F30F58CB         addss XMM1, XMM3
;; 63:       F30F58CA         addss XMM1, XMM2
;; 67:       660F7ECA         movd EDX, XMM1
;; 6B:       48C1E220         shl RDX, 32
;; 6F:       80CA19           or DL, 25
;; 72:       488BE5           mov RSP, RBP
;; 75:       F8               clc
;; 76:       5D               pop RBP
;; 77:       C3               ret
;; 78:       CC10             int3 16
#+END_SRC

Once a fast generic function has been sealed, it is not possible to add,
remove, or redefine methods within the sealed domain.  However, outside of
the sealed domain, it behaves just like a standard generic function.  That
means we can extend its behavior, e.g., to allow addition of strings:

#+BEGIN_SRC lisp
(defmethod binary-+ ((x string) (y string))
  (concatenate 'string x y))

(generic-+ "foo" "bar" "baz")
;; => "foobarbaz"
#+END_SRC

* Specializing on a User-Defined Class

By default, only built-in classes and structure classes can appear as
specializers of a method within a sealed domain of a fast generic function.
However, it is also possible to define custom sealable classes.  This
example illustrates how.

Since this example has plenty of dependencies (metaobject definition and
use, generic function definition and method defintion, sealing and use of a
sealed function), each of the following snippets of code should be put into
its own file.

In the first snippet, we define sealable standard class, that is both a
sealable class and a standard class.

#+BEGIN_SRC lisp
(defclass sealable-standard-class
    (sealable-metaobjects:sealable-class standard-class)
  ())

(defmethod validate-superclass
    ((class sealable-standard-class)
     (superclass standard-class))
  t)
#+END_SRC

In the next snippet, we define a class =foo= whose metaclass is our newly
introduced =sealable-standard-class=.  Because the implementation of fast
generic functions uses literal instances to find an optimized effective
method function at load time, each sealable class must also have a suitable
method on =make-load-form=.

#+BEGIN_SRC lisp
(defclass foo ()
  ((x :reader x :initarg :x))
  (:metaclass sealable-standard-class))

(defmethod make-load-form ((foo foo) &optional env)
  (make-load-form-saving-slots foo :slot-names '(x) :environment env))
#+END_SRC

In the next snippet, we define a fast generic function =op=.

#+BEGIN_SRC lisp
(defgeneric op (foo)
  (:generic-function-class fast-generic-functions:fast-generic-function))
#+END_SRC

Once we have loaded the definition of =op=, we can add individual methods
and seal some of them.  In particular, we can add a method that specializes
on the =foo= class.

We could also have defined this method without =foo= being a sealable
class, but then the call to =seal-domain= would have signaled an error.

#+BEGIN_SRC lisp
(defmethod op ((foo foo))
  (* 2 (x foo)))

(sealable-metaobjects:seal-domain #'op '(foo))
#+END_SRC

Finally, we have everything in place for having optimized calls to =op= in
the case where its argument is of type =foo=.

#+BEGIN_SRC lisp
(defun bar ()
  (let ((foo (make-instance 'foo :x 42)))
    (declare (foo foo))
    (op foo)))
#+END_SRC

If this example is too intimidating for you, please remember that you can
always specialize fast methods on built-in classes (like integer and
simple-vector) or structure classes (everything defined via =defstruct=).


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

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


Previous: , Up: Systems   [Contents][Index]

2.1 fast-generic-functions

Author

Marco Heisig <marco.heisig@fau.de>

License

MIT

Description

Seal your generic functions for an extra boost in performance.

Dependencies
Source

fast-generic-functions.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

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


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 fast-generic-functions.asd

Location

fast-generic-functions.asd

Systems

fast-generic-functions (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 fast-generic-functions/packages.lisp

Parent

fast-generic-functions (system)

Location

packages.lisp

Packages

fast-generic-functions


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 fast-generic-functions/utilities.lisp

Dependency

packages.lisp (file)

Parent

fast-generic-functions (system)

Location

utilities.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 fast-generic-functions/lambda-lists.lisp

Dependency

utilities.lisp (file)

Parent

fast-generic-functions (system)

Location

lambda-lists.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 fast-generic-functions/expand-effective-method-body.lisp

Dependency

lambda-lists.lisp (file)

Parent

fast-generic-functions (system)

Location

expand-effective-method-body.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 fast-generic-functions/generic-functions.lisp

Dependency

expand-effective-method-body.lisp (file)

Parent

fast-generic-functions (system)

Location

generic-functions.lisp

Exported Definitions
Internal Definitions

optimize-function-call (generic function)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.7 fast-generic-functions/fast-method.lisp

Dependency

generic-functions.lisp (file)

Parent

fast-generic-functions (system)

Location

fast-method.lisp

Exported Definitions

fast-method (class)

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.8 fast-generic-functions/fast-generic-function.lisp

Dependency

fast-method.lisp (file)

Parent

fast-generic-functions (system)

Location

fast-generic-function.lisp

Exported Definitions

fast-generic-function (class)

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.9 fast-generic-functions/optimize-function-call.lisp

Dependency

fast-generic-function.lisp (file)

Parent

fast-generic-functions (system)

Location

optimize-function-call.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.10 fast-generic-functions/default.lisp

If Feature

(not (or sbcl ccl))

Dependency

optimize-function-call.lisp (file)

Parent

fast-generic-functions (system)

Location

default.lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.11 fast-generic-functions/sbcl.lisp

If Feature

sbcl

Dependency

default.lisp (file)

Parent

fast-generic-functions (system)

Location

sbcl.lisp


Previous: , Up: Lisp files   [Contents][Index]

3.1.12 fast-generic-functions/ccl.lisp

If Feature

ccl

Dependency

sbcl.lisp (file)

Parent

fast-generic-functions (system)

Location

ccl.lisp


Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 fast-generic-functions

Source

packages.lisp (file)

Use List

closer-common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

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


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Generic functions

Generic Function: no-primary-method GENERIC-FUNCTION &rest ARGUMENTS
Package

fast-generic-functions

Source

generic-functions.lisp (file)

Methods
Method: no-primary-method (GENERIC-FUNCTION generic-function) &rest ARGUMENTS

Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Classes

Class: fast-generic-function ()
Package

fast-generic-functions

Source

fast-generic-function.lisp (file)

Direct superclasses

sealable-standard-generic-function (class)

Direct methods
Direct slots
Slot: %full-effective-method-cache
Initform

(quote nil)

Readers

full-effective-method-cache (generic function)

Writers

(setf full-effective-method-cache) (generic function)

Slot: %flat-effective-method-cache
Initform

(quote nil)

Readers

flat-effective-method-cache (generic function)

Writers

(setf flat-effective-method-cache) (generic function)

Direct Default Initargs
InitargValue
:method-class(find-class (quote fast-generic-functions:fast-method))
Class: fast-method ()
Package

fast-generic-functions

Source

fast-method.lisp (file)

Direct superclasses

potentially-sealable-standard-method (class)

Direct methods
  • make-method-lambda (method)
  • validate-method-property (method)
  • fast-method-lambda (method)
Direct slots
Slot: %lambda
Initargs

fast-generic-functions::.lambda.

Initform

(fast-generic-functions::required-argument (quote fast-generic-functions::.lambda.))

Readers

fast-method-lambda (generic function)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Functions

Function: anonymize-auxiliary-info INFO
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: anonymize-keyword-info INFO
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: anonymize-optional-info INFO
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: anonymize-ordinary-lambda-list LAMBDA-LIST
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: anonymize-required-info INFO
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: block-name FUNCTION-NAME
Package

fast-generic-functions

Source

utilities.lisp (file)

Function: call-fast-method-lambda METHOD LAMBDA-LIST
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: coerce-to-fast-method METHOD LAMBDA-LIST METHOD-CLASS
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: compute-effective-method-lambda-list GENERIC-FUNCTION APPLICABLE-METHODS
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: effective-method-lambda GENERIC-FUNCTION STATIC-CALL-SIGNATURE FLATTEN-ARGUMENTS
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: expand-call-method METHOD NEXT-METHODS LAMBDA-LIST METHOD-CLASS
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: expand-effective-method-body EFFECTIVE-METHOD GENERIC-FUNCTION LAMBDA-LIST
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: inlineable-method-p METHOD
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: lambda-list-apply-arguments LAMBDA-LIST
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: lambda-list-variables LAMBDA-LIST
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: lookup-flat-effective-method GENERIC-FUNCTION STATIC-CALL-SIGNATURE
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: lookup-full-effective-method GENERIC-FUNCTION STATIC-CALL-SIGNATURE
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: make-fast-method-lambda GENERIC-FUNCTION METHOD LAMBDA ENVIRONMENT
Package

fast-generic-functions

Source

fast-method.lisp (file)

Function: merge-allow-other-keys G-ALLOW-OTHER-KEYS M-ALLOW-OTHER-KEYS-LIST
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: merge-keyword-infos G-KEYWORD M-KEYWORDS
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: merge-optional-infos G-OPTIONAL M-OPTIONALS
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: merge-required-infos G-REQUIRED M-REQUIREDS
Package

fast-generic-functions

Source

optimize-function-call.lisp (file)

Function: normalize-ordinary-lambda-list LAMBDA-LIST
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: null-lexical-environement-p ENVIRONMENT
Package

fast-generic-functions

Source

utilities.lisp (file)

Function: parse-auxiliary-item ITEM
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: parse-keyword-item ITEM
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: parse-optional-item ITEM
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: parse-ordinary-lambda-list LAMBDA-LIST

Returns six values:

1. A list of REQUIRED-INFO instances, one for each required argument.

2. A list of OPTIONAL-INFO instances, one for each optional argument.

3. The name of the rest variable, or NIL, if there is none.

4. A list of KEYWORD-INFO instances, one for each keyword argument.

5. A boolean, indicating whether &allow-other-keys is present.

6. A list of AUXILIARY-INFO instances, one for each auxiliary argument.

Can parse all but specialized lambda lists.

Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: parse-reqired-item ITEM
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: required-argument NAME
Package

fast-generic-functions

Source

utilities.lisp (file)

Function: starts-with ITEM
Package

fast-generic-functions

Source

utilities.lisp (file)

Function: unparse-auxiliary AUXILIARY
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: unparse-keyword KEYWORD ALLOW-OTHER-KEYS-P
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: unparse-optional OPTIONAL
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: unparse-ordinary-lambda-list REQUIRED OPTIONAL REST-VAR KEYWORD ALLOW-OTHER-KEYS-P AUXILIARY
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: unparse-required REQUIRED
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: unparse-rest REST-VAR
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Function: wrap-in-call-method-macrolet FORM GENERIC-FUNCTION LAMBDA-LIST
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: wrap-in-next-methods FORM NEXT-METHODS LAMBDA-LIST METHOD-CLASS
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)

Function: wrap-in-reinitialize-arguments FORM LAMBDA-LIST
Package

fast-generic-functions

Source

expand-effective-method-body.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Generic functions

Generic Function: auxiliary-info-initform OBJECT
Package

fast-generic-functions

Methods
Method: auxiliary-info-initform (AUXILIARY-INFO auxiliary-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: auxiliary-info-variable OBJECT
Package

fast-generic-functions

Methods
Method: auxiliary-info-variable (AUXILIARY-INFO auxiliary-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: fast-method-lambda OBJECT
Package

fast-generic-functions

Methods
Method: fast-method-lambda (FAST-METHOD fast-method)

automatically generated reader method

Source

fast-method.lisp (file)

Generic Function: flat-effective-method-cache OBJECT
Generic Function: (setf flat-effective-method-cache) NEW-VALUE OBJECT
Package

fast-generic-functions

Methods
Method: flat-effective-method-cache (FAST-GENERIC-FUNCTION fast-generic-function)

automatically generated reader method

Source

fast-generic-function.lisp (file)

Method: (setf flat-effective-method-cache) NEW-VALUE (FAST-GENERIC-FUNCTION fast-generic-function)

automatically generated writer method

Source

fast-generic-function.lisp (file)

Generic Function: full-effective-method-cache OBJECT
Generic Function: (setf full-effective-method-cache) NEW-VALUE OBJECT
Package

fast-generic-functions

Methods
Method: full-effective-method-cache (FAST-GENERIC-FUNCTION fast-generic-function)

automatically generated reader method

Source

fast-generic-function.lisp (file)

Method: (setf full-effective-method-cache) NEW-VALUE (FAST-GENERIC-FUNCTION fast-generic-function)

automatically generated writer method

Source

fast-generic-function.lisp (file)

Generic Function: gensymify OBJECT
Package

fast-generic-functions

Source

utilities.lisp (file)

Methods
Method: gensymify (STRING string)
Method: gensymify (SYMBOL symbol)
Method: gensymify OBJECT
Generic Function: keyword-info-initform OBJECT
Package

fast-generic-functions

Methods
Method: keyword-info-initform (KEYWORD-INFO keyword-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: keyword-info-keyword OBJECT
Package

fast-generic-functions

Methods
Method: keyword-info-keyword (KEYWORD-INFO keyword-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: keyword-info-suppliedp OBJECT
Package

fast-generic-functions

Methods
Method: keyword-info-suppliedp (KEYWORD-INFO keyword-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: keyword-info-variable OBJECT
Package

fast-generic-functions

Methods
Method: keyword-info-variable (KEYWORD-INFO keyword-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: optimize-function-call GENERIC-FUNCTION STATIC-CALL-SIGNATURE
Package

fast-generic-functions

Source

generic-functions.lisp (file)

Methods
Method: optimize-function-call (FAST-GENERIC-FUNCTION fast-generic-function) (STATIC-CALL-SIGNATURE static-call-signature)
Source

optimize-function-call.lisp (file)

Method: optimize-function-call (FAST-GENERIC-FUNCTION fast-generic-function) (STATIC-CALL-SIGNATURE static-call-signature) around
Source

optimize-function-call.lisp (file)

Generic Function: optional-info-initform OBJECT
Package

fast-generic-functions

Methods
Method: optional-info-initform (OPTIONAL-INFO optional-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: optional-info-suppliedp OBJECT
Package

fast-generic-functions

Methods
Method: optional-info-suppliedp (OPTIONAL-INFO optional-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: optional-info-variable OBJECT
Package

fast-generic-functions

Methods
Method: optional-info-variable (OPTIONAL-INFO optional-info)

automatically generated reader method

Source

lambda-lists.lisp (file)

Generic Function: required-info-variable OBJECT
Package

fast-generic-functions

Methods
Method: required-info-variable (REQUIRED-INFO required-info)

automatically generated reader method

Source

lambda-lists.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Classes

Class: auxiliary-info ()
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %variable
Type

fast-generic-functions::local-variable

Initargs

:variable

Initform

(fast-generic-functions::required-argument :variable)

Readers

auxiliary-info-variable (generic function)

Slot: %initform
Initargs

:initform

Readers

auxiliary-info-initform (generic function)

Class: keyword-info ()
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %keyword
Type

keyword

Initargs

:keyword

Initform

(fast-generic-functions::required-argument :keyword)

Readers

keyword-info-keyword (generic function)

Slot: %variable
Type

fast-generic-functions::local-variable

Initargs

:variable

Initform

(fast-generic-functions::required-argument :variable)

Readers

keyword-info-variable (generic function)

Slot: %initform
Initargs

:initform

Readers

keyword-info-initform (generic function)

Slot: %suppliedp
Type

(or null fast-generic-functions::local-variable)

Initargs

:suppliedp

Readers

keyword-info-suppliedp (generic function)

Class: optional-info ()
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Direct superclasses

standard-object (class)

Direct methods
Direct slots
Slot: %variable
Type

fast-generic-functions::local-variable

Initargs

:variable

Initform

(fast-generic-functions::required-argument :variable)

Readers

optional-info-variable (generic function)

Slot: %initform
Initargs

:initform

Readers

optional-info-initform (generic function)

Slot: %suppliedp
Type

(or null fast-generic-functions::local-variable)

Initargs

:suppliedp

Readers

optional-info-suppliedp (generic function)

Class: required-info ()
Package

fast-generic-functions

Source

lambda-lists.lisp (file)

Direct superclasses

standard-object (class)

Direct methods

required-info-variable (method)

Direct slots
Slot: %variable
Type

fast-generic-functions::local-variable

Initargs

:variable

Initform

(fast-generic-functions::required-argument :variable)

Readers

required-info-variable (generic function)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Types

Type: local-variable ()
Package

fast-generic-functions

Source

lambda-lists.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L  
Index Entry  Section

F
fast-generic-functions.asd: The fast-generic-functions․asd file
fast-generic-functions/ccl.lisp: The fast-generic-functions/ccl․lisp file
fast-generic-functions/default.lisp: The fast-generic-functions/default․lisp file
fast-generic-functions/expand-effective-method-body.lisp: The fast-generic-functions/expand-effective-method-body․lisp file
fast-generic-functions/fast-generic-function.lisp: The fast-generic-functions/fast-generic-function․lisp file
fast-generic-functions/fast-method.lisp: The fast-generic-functions/fast-method․lisp file
fast-generic-functions/generic-functions.lisp: The fast-generic-functions/generic-functions․lisp file
fast-generic-functions/lambda-lists.lisp: The fast-generic-functions/lambda-lists․lisp file
fast-generic-functions/optimize-function-call.lisp: The fast-generic-functions/optimize-function-call․lisp file
fast-generic-functions/packages.lisp: The fast-generic-functions/packages․lisp file
fast-generic-functions/sbcl.lisp: The fast-generic-functions/sbcl․lisp file
fast-generic-functions/utilities.lisp: The fast-generic-functions/utilities․lisp file
File, Lisp, fast-generic-functions.asd: The fast-generic-functions․asd file
File, Lisp, fast-generic-functions/ccl.lisp: The fast-generic-functions/ccl․lisp file
File, Lisp, fast-generic-functions/default.lisp: The fast-generic-functions/default․lisp file
File, Lisp, fast-generic-functions/expand-effective-method-body.lisp: The fast-generic-functions/expand-effective-method-body․lisp file
File, Lisp, fast-generic-functions/fast-generic-function.lisp: The fast-generic-functions/fast-generic-function․lisp file
File, Lisp, fast-generic-functions/fast-method.lisp: The fast-generic-functions/fast-method․lisp file
File, Lisp, fast-generic-functions/generic-functions.lisp: The fast-generic-functions/generic-functions․lisp file
File, Lisp, fast-generic-functions/lambda-lists.lisp: The fast-generic-functions/lambda-lists․lisp file
File, Lisp, fast-generic-functions/optimize-function-call.lisp: The fast-generic-functions/optimize-function-call․lisp file
File, Lisp, fast-generic-functions/packages.lisp: The fast-generic-functions/packages․lisp file
File, Lisp, fast-generic-functions/sbcl.lisp: The fast-generic-functions/sbcl․lisp file
File, Lisp, fast-generic-functions/utilities.lisp: The fast-generic-functions/utilities․lisp file

L
Lisp File, fast-generic-functions.asd: The fast-generic-functions․asd file
Lisp File, fast-generic-functions/ccl.lisp: The fast-generic-functions/ccl․lisp file
Lisp File, fast-generic-functions/default.lisp: The fast-generic-functions/default․lisp file
Lisp File, fast-generic-functions/expand-effective-method-body.lisp: The fast-generic-functions/expand-effective-method-body․lisp file
Lisp File, fast-generic-functions/fast-generic-function.lisp: The fast-generic-functions/fast-generic-function․lisp file
Lisp File, fast-generic-functions/fast-method.lisp: The fast-generic-functions/fast-method․lisp file
Lisp File, fast-generic-functions/generic-functions.lisp: The fast-generic-functions/generic-functions․lisp file
Lisp File, fast-generic-functions/lambda-lists.lisp: The fast-generic-functions/lambda-lists․lisp file
Lisp File, fast-generic-functions/optimize-function-call.lisp: The fast-generic-functions/optimize-function-call․lisp file
Lisp File, fast-generic-functions/packages.lisp: The fast-generic-functions/packages․lisp file
Lisp File, fast-generic-functions/sbcl.lisp: The fast-generic-functions/sbcl․lisp file
Lisp File, fast-generic-functions/utilities.lisp: The fast-generic-functions/utilities․lisp file

Jump to:   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   B   C   E   F   G   I   K   L   M   N   O   P   R   S   U   W  
Index Entry  Section

(
(setf flat-effective-method-cache): Internal generic functions
(setf flat-effective-method-cache): Internal generic functions
(setf full-effective-method-cache): Internal generic functions
(setf full-effective-method-cache): Internal generic functions

A
anonymize-auxiliary-info: Internal functions
anonymize-keyword-info: Internal functions
anonymize-optional-info: Internal functions
anonymize-ordinary-lambda-list: Internal functions
anonymize-required-info: Internal functions
auxiliary-info-initform: Internal generic functions
auxiliary-info-initform: Internal generic functions
auxiliary-info-variable: Internal generic functions
auxiliary-info-variable: Internal generic functions

B
block-name: Internal functions

C
call-fast-method-lambda: Internal functions
coerce-to-fast-method: Internal functions
compute-effective-method-lambda-list: Internal functions

E
effective-method-lambda: Internal functions
expand-call-method: Internal functions
expand-effective-method-body: Internal functions

F
fast-method-lambda: Internal generic functions
fast-method-lambda: Internal generic functions
flat-effective-method-cache: Internal generic functions
flat-effective-method-cache: Internal generic functions
full-effective-method-cache: Internal generic functions
full-effective-method-cache: Internal generic functions
Function, anonymize-auxiliary-info: Internal functions
Function, anonymize-keyword-info: Internal functions
Function, anonymize-optional-info: Internal functions
Function, anonymize-ordinary-lambda-list: Internal functions
Function, anonymize-required-info: Internal functions
Function, block-name: Internal functions
Function, call-fast-method-lambda: Internal functions
Function, coerce-to-fast-method: Internal functions
Function, compute-effective-method-lambda-list: Internal functions
Function, effective-method-lambda: Internal functions
Function, expand-call-method: Internal functions
Function, expand-effective-method-body: Internal functions
Function, inlineable-method-p: Internal functions
Function, lambda-list-apply-arguments: Internal functions
Function, lambda-list-variables: Internal functions
Function, lookup-flat-effective-method: Internal functions
Function, lookup-full-effective-method: Internal functions
Function, make-fast-method-lambda: Internal functions
Function, merge-allow-other-keys: Internal functions
Function, merge-keyword-infos: Internal functions
Function, merge-optional-infos: Internal functions
Function, merge-required-infos: Internal functions
Function, normalize-ordinary-lambda-list: Internal functions
Function, null-lexical-environement-p: Internal functions
Function, parse-auxiliary-item: Internal functions
Function, parse-keyword-item: Internal functions
Function, parse-optional-item: Internal functions
Function, parse-ordinary-lambda-list: Internal functions
Function, parse-reqired-item: Internal functions
Function, required-argument: Internal functions
Function, starts-with: Internal functions
Function, unparse-auxiliary: Internal functions
Function, unparse-keyword: Internal functions
Function, unparse-optional: Internal functions
Function, unparse-ordinary-lambda-list: Internal functions
Function, unparse-required: Internal functions
Function, unparse-rest: Internal functions
Function, wrap-in-call-method-macrolet: Internal functions
Function, wrap-in-next-methods: Internal functions
Function, wrap-in-reinitialize-arguments: Internal functions

G
Generic Function, (setf flat-effective-method-cache): Internal generic functions
Generic Function, (setf full-effective-method-cache): Internal generic functions
Generic Function, auxiliary-info-initform: Internal generic functions
Generic Function, auxiliary-info-variable: Internal generic functions
Generic Function, fast-method-lambda: Internal generic functions
Generic Function, flat-effective-method-cache: Internal generic functions
Generic Function, full-effective-method-cache: Internal generic functions
Generic Function, gensymify: Internal generic functions
Generic Function, keyword-info-initform: Internal generic functions
Generic Function, keyword-info-keyword: Internal generic functions
Generic Function, keyword-info-suppliedp: Internal generic functions
Generic Function, keyword-info-variable: Internal generic functions
Generic Function, no-primary-method: Exported generic functions
Generic Function, optimize-function-call: Internal generic functions
Generic Function, optional-info-initform: Internal generic functions
Generic Function, optional-info-suppliedp: Internal generic functions
Generic Function, optional-info-variable: Internal generic functions
Generic Function, required-info-variable: Internal generic functions
gensymify: Internal generic functions
gensymify: Internal generic functions
gensymify: Internal generic functions
gensymify: Internal generic functions

I
inlineable-method-p: Internal functions

K
keyword-info-initform: Internal generic functions
keyword-info-initform: Internal generic functions
keyword-info-keyword: Internal generic functions
keyword-info-keyword: Internal generic functions
keyword-info-suppliedp: Internal generic functions
keyword-info-suppliedp: Internal generic functions
keyword-info-variable: Internal generic functions
keyword-info-variable: Internal generic functions

L
lambda-list-apply-arguments: Internal functions
lambda-list-variables: Internal functions
lookup-flat-effective-method: Internal functions
lookup-full-effective-method: Internal functions

M
make-fast-method-lambda: Internal functions
merge-allow-other-keys: Internal functions
merge-keyword-infos: Internal functions
merge-optional-infos: Internal functions
merge-required-infos: Internal functions
Method, (setf flat-effective-method-cache): Internal generic functions
Method, (setf full-effective-method-cache): Internal generic functions
Method, auxiliary-info-initform: Internal generic functions
Method, auxiliary-info-variable: Internal generic functions
Method, fast-method-lambda: Internal generic functions
Method, flat-effective-method-cache: Internal generic functions
Method, full-effective-method-cache: Internal generic functions
Method, gensymify: Internal generic functions
Method, gensymify: Internal generic functions
Method, gensymify: Internal generic functions
Method, keyword-info-initform: Internal generic functions
Method, keyword-info-keyword: Internal generic functions
Method, keyword-info-suppliedp: Internal generic functions
Method, keyword-info-variable: Internal generic functions
Method, no-primary-method: Exported generic functions
Method, optimize-function-call: Internal generic functions
Method, optimize-function-call: Internal generic functions
Method, optional-info-initform: Internal generic functions
Method, optional-info-suppliedp: Internal generic functions
Method, optional-info-variable: Internal generic functions
Method, required-info-variable: Internal generic functions

N
no-primary-method: Exported generic functions
no-primary-method: Exported generic functions
normalize-ordinary-lambda-list: Internal functions
null-lexical-environement-p: Internal functions

O
optimize-function-call: Internal generic functions
optimize-function-call: Internal generic functions
optimize-function-call: Internal generic functions
optional-info-initform: Internal generic functions
optional-info-initform: Internal generic functions
optional-info-suppliedp: Internal generic functions
optional-info-suppliedp: Internal generic functions
optional-info-variable: Internal generic functions
optional-info-variable: Internal generic functions

P
parse-auxiliary-item: Internal functions
parse-keyword-item: Internal functions
parse-optional-item: Internal functions
parse-ordinary-lambda-list: Internal functions
parse-reqired-item: Internal functions

R
required-argument: Internal functions
required-info-variable: Internal generic functions
required-info-variable: Internal generic functions

S
starts-with: Internal functions

U
unparse-auxiliary: Internal functions
unparse-keyword: Internal functions
unparse-optional: Internal functions
unparse-ordinary-lambda-list: Internal functions
unparse-required: Internal functions
unparse-rest: Internal functions

W
wrap-in-call-method-macrolet: Internal functions
wrap-in-next-methods: Internal functions
wrap-in-reinitialize-arguments: Internal functions

Jump to:   (  
A   B   C   E   F   G   I   K   L   M   N   O   P   R   S   U   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   %  
S  
Index Entry  Section

%
%flat-effective-method-cache: Exported classes
%full-effective-method-cache: Exported classes
%initform: Internal classes
%initform: Internal classes
%initform: Internal classes
%keyword: Internal classes
%lambda: Exported classes
%suppliedp: Internal classes
%suppliedp: Internal classes
%variable: Internal classes
%variable: Internal classes
%variable: Internal classes
%variable: Internal classes

S
Slot, %flat-effective-method-cache: Exported classes
Slot, %full-effective-method-cache: Exported classes
Slot, %initform: Internal classes
Slot, %initform: Internal classes
Slot, %initform: Internal classes
Slot, %keyword: Internal classes
Slot, %lambda: Exported classes
Slot, %suppliedp: Internal classes
Slot, %suppliedp: Internal classes
Slot, %variable: Internal classes
Slot, %variable: Internal classes
Slot, %variable: Internal classes
Slot, %variable: Internal classes

Jump to:   %  
S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   C   F   K   L   O   P   R   S   T  
Index Entry  Section

A
auxiliary-info: Internal classes

C
Class, auxiliary-info: Internal classes
Class, fast-generic-function: Exported classes
Class, fast-method: Exported classes
Class, keyword-info: Internal classes
Class, optional-info: Internal classes
Class, required-info: Internal classes

F
fast-generic-function: Exported classes
fast-generic-functions: The fast-generic-functions system
fast-generic-functions: The fast-generic-functions package
fast-method: Exported classes

K
keyword-info: Internal classes

L
local-variable: Internal types

O
optional-info: Internal classes

P
Package, fast-generic-functions: The fast-generic-functions package

R
required-info: Internal classes

S
System, fast-generic-functions: The fast-generic-functions system

T
Type, local-variable: Internal types

Jump to:   A   C   F   K   L   O   P   R   S   T