This is the polymorphic-functions-lite Reference Manual, version 0.5.2, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 07:19:00 2024 GMT+0.
polymorphic-functions-lite/polymorphic-functions-lite.asd
polymorphic-functions-lite/package.lisp
polymorphic-functions-lite/utils.lisp
polymorphic-functions-lite/types.lisp
polymorphic-functions-lite/type-tools.lisp
polymorphic-functions-lite/ensure-type-form.lisp
polymorphic-functions-lite/lambda-lists/doc.lisp
polymorphic-functions-lite/lambda-lists/parameters.lisp
polymorphic-functions-lite/lambda-lists/base.lisp
polymorphic-functions-lite/lambda-lists/required.lisp
polymorphic-functions-lite/lambda-lists/required-optional.lisp
polymorphic-functions-lite/lambda-lists/required-key.lisp
polymorphic-functions-lite/lambda-lists/rest.lisp
polymorphic-functions-lite/polymorphic-function.lisp
polymorphic-functions-lite/conditions.lisp
polymorphic-functions-lite/dispatch.lisp
polymorphic-functions-lite/misc-tests.lisp
The main system appears first, followed by any subsystem dependency.
polymorphic-functions-lite
Variant of polymorphic-functions with no support for static dispatch. This lets it have minimal dependencies.
MIT
0.5.2
alexandria
(system).
fiveam
(system).
introspect-environment
(system).
optima
(system).
package.lisp
(file).
utils.lisp
(file).
types.lisp
(file).
type-tools.lisp
(file).
ensure-type-form.lisp
(file).
lambda-lists
(module).
polymorphic-function.lisp
(file).
conditions.lisp
(file).
dispatch.lisp
(file).
misc-tests.lisp
(file).
Modules are listed depth-first from the system components tree.
polymorphic-functions-lite/lambda-lists
ensure-type-form.lisp
(file).
type-tools.lisp
(file).
types.lisp
(file).
polymorphic-functions-lite
(system).
doc.lisp
(file).
parameters.lisp
(file).
base.lisp
(file).
required.lisp
(file).
required-optional.lisp
(file).
required-key.lisp
(file).
rest.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
polymorphic-functions-lite/polymorphic-functions-lite.asd
polymorphic-functions-lite/package.lisp
polymorphic-functions-lite/utils.lisp
polymorphic-functions-lite/types.lisp
polymorphic-functions-lite/type-tools.lisp
polymorphic-functions-lite/ensure-type-form.lisp
polymorphic-functions-lite/lambda-lists/doc.lisp
polymorphic-functions-lite/lambda-lists/parameters.lisp
polymorphic-functions-lite/lambda-lists/base.lisp
polymorphic-functions-lite/lambda-lists/required.lisp
polymorphic-functions-lite/lambda-lists/required-optional.lisp
polymorphic-functions-lite/lambda-lists/required-key.lisp
polymorphic-functions-lite/lambda-lists/rest.lisp
polymorphic-functions-lite/polymorphic-function.lisp
polymorphic-functions-lite/conditions.lisp
polymorphic-functions-lite/dispatch.lisp
polymorphic-functions-lite/misc-tests.lisp
polymorphic-functions-lite/polymorphic-functions-lite.asd
polymorphic-functions-lite
(system).
polymorphic-functions-lite/package.lisp
polymorphic-functions-lite
(system).
polymorphic-functions-lite/utils.lisp
package.lisp
(file).
polymorphic-functions-lite
(system).
catch-condition
(macro).
find-class
(function).
function-name
(type).
is-error
(macro).
let+
(macro).
list-named-lambda
(macro).
named-lambda
(macro).
optim-debug
(symbol macro).
optim-safety
(symbol macro).
optim-slight-speed
(symbol macro).
optim-speed
(symbol macro).
traverse-tree
(function).
type-specifier-p
(function).
with-eval-always
(macro).
polymorphic-functions-lite/types.lisp
utils.lisp
(file).
polymorphic-functions-lite
(system).
polymorph
(structure).
polymorphic-function
(class).
print-object
(method).
print-object
(method).
print-object
(method).
+lambda-list-types+
(constant).
+optimize-speed-or-compilation-speed+
(constant).
copy-polymorph
(function).
copy-polymorph-parameter
(function).
copy-polymorph-parameters
(function).
gf-lock
(reader method).
lambda-list-type
(type).
lambda-list-type-p
(function).
make-polymorph
(function).
make-polymorph-parameter
(function).
make-polymorph-parameters
(function).
polymorph-compiler-applicable-p-lambda
(reader).
(setf polymorph-compiler-applicable-p-lambda)
(writer).
polymorph-compiler-macro-lambda
(reader).
(setf polymorph-compiler-macro-lambda)
(writer).
polymorph-compiler-macro-source
(reader).
(setf polymorph-compiler-macro-source)
(writer).
polymorph-documentation
(reader).
(setf polymorph-documentation)
(writer).
polymorph-effective-type-list
(reader).
(setf polymorph-effective-type-list)
(writer).
polymorph-inline-lambda-body
(reader).
(setf polymorph-inline-lambda-body)
(writer).
polymorph-inline-p
(reader).
(setf polymorph-inline-p)
(writer).
polymorph-lambda-list-type
(reader).
(setf polymorph-lambda-list-type)
(writer).
polymorph-more-optimal-type-list
(reader).
(setf polymorph-more-optimal-type-list)
(writer).
polymorph-name
(reader).
(setf polymorph-name)
(writer).
polymorph-p
(function).
polymorph-parameter
(structure).
polymorph-parameter-p
(function).
polymorph-parameters
(reader).
(setf polymorph-parameters)
(writer).
polymorph-parameters
(structure).
polymorph-parameters-keyword
(reader).
(setf polymorph-parameters-keyword)
(writer).
polymorph-parameters-max-args
(reader).
(setf polymorph-parameters-max-args)
(writer).
polymorph-parameters-min-args
(reader).
(setf polymorph-parameters-min-args)
(writer).
polymorph-parameters-optional
(reader).
(setf polymorph-parameters-optional)
(writer).
polymorph-parameters-p
(function).
polymorph-parameters-required
(reader).
(setf polymorph-parameters-required)
(writer).
polymorph-parameters-rest
(reader).
(setf polymorph-parameters-rest)
(writer).
polymorph-parameters-validator-form
(reader).
(setf polymorph-parameters-validator-form)
(writer).
polymorph-return-type
(reader).
(setf polymorph-return-type)
(writer).
polymorph-runtime-applicable-p-form
(reader).
(setf polymorph-runtime-applicable-p-form)
(writer).
polymorph-source
(reader).
(setf polymorph-source)
(writer).
polymorph-static-dispatch-name
(reader).
(setf polymorph-static-dispatch-name)
(writer).
polymorph-suboptimal-note
(reader).
(setf polymorph-suboptimal-note)
(writer).
polymorph-type-list
(reader).
(setf polymorph-type-list)
(writer).
polymorph-typed-lambda-list
(reader).
(setf polymorph-typed-lambda-list)
(writer).
polymorphic-function-default
(reader method).
polymorphic-function-dispatch-declaration
(reader method).
(setf polymorphic-function-dispatch-declaration)
(writer method).
polymorphic-function-documentation
(reader method).
(setf polymorphic-function-documentation)
(writer method).
polymorphic-function-effective-lambda-list
(reader method).
polymorphic-function-invalidated-p
(reader method).
(setf polymorphic-function-invalidated-p)
(writer method).
polymorphic-function-lambda-list
(reader method).
polymorphic-function-lambda-list-type
(reader method).
polymorphic-function-name
(reader method).
polymorphic-function-polymorphs
(reader method).
(setf polymorphic-function-polymorphs)
(writer method).
polymorphic-function-source
(reader method).
pp-default-value-form
(reader).
(setf pp-default-value-form)
(writer).
pp-form-in-pf
(reader).
(setf pp-form-in-pf)
(writer).
pp-local-name
(reader).
(setf pp-local-name)
(writer).
pp-supplied-p-name
(reader).
(setf pp-supplied-p-name)
(writer).
pp-value-effective-type
(reader).
(setf pp-value-effective-type)
(writer).
pp-value-type
(reader).
(setf pp-value-type)
(writer).
sbcl-version-spec-integer
(function).
sbcl-version-spec-list
(function).
type-list
(type).
type-list-order-keywords
(function).
type-list-p
(function).
typed-lambda-list
(type).
typed-lambda-list-p
(function).
untyped-lambda-list
(type).
untyped-lambda-list-p
(function).
polymorphic-functions-lite/type-tools.lisp
utils.lisp
(file).
polymorphic-functions-lite
(system).
*extended-subtypep-functions*
(special variable).
*subtypep-alist*
(special variable).
definitive-subtypep
(function).
extended-subtypep
(function).
subtypep-not-known
(condition).
subtypep-using-subtypep-alist
(function).
translate-body
(function).
type-pair-=
(function).
polymorphic-functions-lite/ensure-type-form.lisp
utils.lisp
(file).
polymorphic-functions-lite
(system).
ensure-type-form
(function).
return-type-count-mismatch
(condition).
return-type-count-mismatch/warning
(condition).
return-type-mismatch
(condition).
return-type-mismatch/error
(condition).
return-type-mismatch/warning
(condition).
with-return-type
(macro).
polymorphic-functions-lite/lambda-lists/doc.lisp
lambda-lists
(module).
+compute-effective-lambda-list-doc+
(constant).
+compute-polymorphic-function-lambda-body-doc+
(constant).
+effective-lambda-list-doc-helper+
(constant).
+lambda-declarations-doc+
(constant).
+lambda-list-type-doc+
(constant).
+sbcl-transform-arg-lvars-from-lambda-list-form+
(constant).
+type-list-intersection-null-p+
(constant).
+type-list-more-specific-p+
(constant).
polymorphic-functions-lite/lambda-lists/parameters.lisp
lambda-lists
(module).
accepts-argument-of-type-p
(function).
compiler-applicable-p-lambda-body
(function).
enhance-run-time-deparameterizer-lambda-body
(function).
enhanced-lambda-declarations
(function).
lambda-declarations
(function).
make-polymorph-parameters-from-lambda-lists
(function).
map-polymorph-parameters
(function).
normalize-typed-lambda-list
(function).
normalize-untyped-lambda-list
(function).
polymorph-effective-lambda-list
(function).
polymorphic-function-make-effective-lambda-list
(function).
run-time-applicable-p-form
(function).
sort-typed-lambda-list
(function).
sort-untyped-lambda-list
(function).
untyped-lambda-list
(function).
polymorphic-functions-lite/lambda-lists/base.lisp
doc.lisp
(file).
parameters.lisp
(file).
lambda-lists
(module).
%lambda-list-type
(generic function).
%sbcl-transform-arg-lvars-from-lambda-list-form
(generic function).
%type-list-compatible-p
(generic function).
%type-list-intersection-null-p
(generic function).
%type-list-more-specific-p
(generic function).
*lambda-list*
(special variable).
*lambda-list-typed-p*
(special variable).
*potential-type*
(special variable).
compute-polymorphic-function-lambda-body
(generic function).
define-lambda-list-helper
(macro).
definitive-intersection-null-p
(function).
ftype-for-static-dispatch
(function).
ftype-proclaimation
(function).
intersection-null-p
(function).
lambda-list-type
(function).
potential-type-of-lambda-list
(function).
sbcl-transform-arg-lvars-from-lambda-list-form
(function).
type-list-compatible-p
(function).
type-list-intersection-null-p
(function).
type-list-more-specific-p
(function).
valid-parameter-name-p
(function).
polymorphic-functions-lite/lambda-lists/required.lisp
base.lisp
(file).
lambda-lists
(module).
%lambda-list-type
(method).
%sbcl-transform-arg-lvars-from-lambda-list-form
(method).
%type-list-compatible-p
(method).
%type-list-intersection-null-p
(method).
%type-list-more-specific-p
(method).
compute-polymorphic-function-lambda-body
(method).
polymorphic-functions-lite/lambda-lists/required-optional.lisp
base.lisp
(file).
lambda-lists
(module).
%lambda-list-type
(method).
%sbcl-transform-arg-lvars-from-lambda-list-form
(method).
%type-list-compatible-p
(method).
%type-list-intersection-null-p
(method).
%type-list-more-specific-p
(method).
compute-polymorphic-function-lambda-body
(method).
polymorphic-functions-lite/lambda-lists/required-key.lisp
base.lisp
(file).
lambda-lists
(module).
%lambda-list-type
(method).
%sbcl-transform-arg-lvars-from-lambda-list-form
(method).
%type-list-compatible-p
(method).
%type-list-intersection-null-p
(method).
%type-list-more-specific-p
(method).
compute-polymorphic-function-lambda-body
(method).
polymorphic-functions-lite/lambda-lists/rest.lisp
base.lisp
(file).
lambda-lists
(module).
%lambda-list-type
(method).
%sbcl-transform-arg-lvars-from-lambda-list-form
(method).
%type-list-compatible-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-intersection-null-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
%type-list-more-specific-p
(method).
compute-polymorphic-function-lambda-body
(method).
polymorphic-functions-lite/polymorphic-function.lisp
lambda-lists
(module).
polymorphic-functions-lite
(system).
find-polymorph
(function).
polymorph-apropos-list-type
(function).
polymorphic-function-type-lists
(function).
*compiler-macro-expanding-p*
(special variable).
*disable-static-dispatch*
(special variable).
*environment*
(special variable).
*name*
(special variable).
add-or-update-polymorph
(function).
blockify-name
(function).
invalidate-polymorphic-function-lambda
(function).
make-or-retrieve-static-dispatch-name
(function).
may-be-pf-lambda-list
(function).
polymorphic-function-effective-type-lists
(function).
register-polymorph
(function).
register-polymorphic-function
(function).
remove-polymorph
(function).
update-polymorphic-function-documentation
(function).
update-polymorphic-function-lambda
(function).
polymorphic-functions-lite/conditions.lisp
package.lisp
(file).
polymorphic-functions-lite
(system).
no-applicable-polymorph
(function).
no-applicable-polymorph
(condition).
arg-types
(reader method).
args
(reader method).
effective-type-lists
(reader method).
lambda-list-has-changed
(condition).
name
(reader method).
name
(reader method).
name
(reader method).
new-lambda-list
(reader method).
no-applicable-polymorph/error
(condition).
not-a-ahp
(condition).
note-no-inline
(function).
note-null-env
(function).
polymorphic-functions-lite/dispatch.lisp
polymorphic-function.lisp
(file).
lambda-lists
(module).
conditions.lisp
(file).
polymorphic-functions-lite
(system).
define-polymorphic-function
(macro).
defpolymorph
(macro).
undefine-polymorphic-function
(function).
undefpolymorph
(function).
ensure-unambiguous-call
(function).
expand-defpolymorph-lite
(function).
extract-declarations
(function).
recursive-function-p
(function).
polymorphic-functions-lite/misc-tests.lisp
dispatch.lisp
(file).
polymorphic-functions-lite
(system).
ignoring-error-output
(macro).
Packages are listed by definition order.
polymorphic-functions.nonuser
Package for internal use by POLYMORPHIC-FUNCTIONS not intended for direct use by users.
polymorphic-functions
alexandria
.
common-lisp
.
define-polymorphic-function
(macro).
defpolymorph
(macro).
find-polymorph
(function).
no-applicable-polymorph
(function).
no-applicable-polymorph
(condition).
polymorph
(structure).
polymorph-apropos-list-type
(function).
polymorphic-function
(class).
polymorphic-function-type-lists
(function).
undefine-polymorphic-function
(function).
undefpolymorph
(function).
%lambda-list-type
(generic function).
%sbcl-transform-arg-lvars-from-lambda-list-form
(generic function).
%type-list-compatible-p
(generic function).
%type-list-intersection-null-p
(generic function).
%type-list-more-specific-p
(generic function).
*compiler-macro-expanding-p*
(special variable).
*disable-static-dispatch*
(special variable).
*environment*
(special variable).
*extended-subtypep-functions*
(special variable).
*lambda-list*
(special variable).
*lambda-list-typed-p*
(special variable).
*name*
(special variable).
*potential-type*
(special variable).
*subtypep-alist*
(special variable).
+compute-effective-lambda-list-doc+
(constant).
+compute-polymorphic-function-lambda-body-doc+
(constant).
+effective-lambda-list-doc-helper+
(constant).
+lambda-declarations-doc+
(constant).
+lambda-list-type-doc+
(constant).
+lambda-list-types+
(constant).
+optimize-speed-or-compilation-speed+
(constant).
+sbcl-transform-arg-lvars-from-lambda-list-form+
(constant).
+type-list-intersection-null-p+
(constant).
+type-list-more-specific-p+
(constant).
accepts-argument-of-type-p
(function).
add-or-update-polymorph
(function).
arg-types
(generic reader).
args
(generic reader).
blockify-name
(function).
catch-condition
(macro).
compiler-applicable-p-lambda-body
(function).
compute-polymorphic-function-lambda-body
(generic function).
copy-polymorph
(function).
copy-polymorph-parameter
(function).
copy-polymorph-parameters
(function).
define-lambda-list-helper
(macro).
definitive-intersection-null-p
(function).
definitive-subtypep
(function).
effective-type-lists
(generic reader).
enhance-run-time-deparameterizer-lambda-body
(function).
enhanced-lambda-declarations
(function).
ensure-type-form
(function).
ensure-unambiguous-call
(function).
expand-defpolymorph-lite
(function).
extended-subtypep
(function).
extract-declarations
(function).
find-class
(function).
ftype-for-static-dispatch
(function).
ftype-proclaimation
(function).
function-name
(type).
ignoring-error-output
(macro).
intersection-null-p
(function).
invalidate-polymorphic-function-lambda
(function).
is-error
(macro).
lambda-declarations
(function).
lambda-list-has-changed
(condition).
lambda-list-type
(function).
lambda-list-type
(type).
lambda-list-type-p
(function).
let+
(macro).
list-named-lambda
(macro).
make-or-retrieve-static-dispatch-name
(function).
make-polymorph
(function).
make-polymorph-parameter
(function).
make-polymorph-parameters
(function).
make-polymorph-parameters-from-lambda-lists
(function).
map-polymorph-parameters
(function).
may-be-pf-lambda-list
(function).
name
(generic reader).
named-lambda
(macro).
new-lambda-list
(generic reader).
no-applicable-polymorph/error
(condition).
normalize-typed-lambda-list
(function).
normalize-untyped-lambda-list
(function).
not-a-ahp
(condition).
note-no-inline
(function).
note-null-env
(function).
optim-debug
(symbol macro).
optim-safety
(symbol macro).
optim-slight-speed
(symbol macro).
optim-speed
(symbol macro).
polymorph-compiler-applicable-p-lambda
(reader).
(setf polymorph-compiler-applicable-p-lambda)
(writer).
polymorph-compiler-macro-lambda
(reader).
(setf polymorph-compiler-macro-lambda)
(writer).
polymorph-compiler-macro-source
(reader).
(setf polymorph-compiler-macro-source)
(writer).
polymorph-documentation
(reader).
(setf polymorph-documentation)
(writer).
polymorph-effective-lambda-list
(function).
polymorph-effective-type-list
(reader).
(setf polymorph-effective-type-list)
(writer).
polymorph-inline-lambda-body
(reader).
(setf polymorph-inline-lambda-body)
(writer).
polymorph-inline-p
(reader).
(setf polymorph-inline-p)
(writer).
polymorph-lambda-list-type
(reader).
(setf polymorph-lambda-list-type)
(writer).
polymorph-more-optimal-type-list
(reader).
(setf polymorph-more-optimal-type-list)
(writer).
polymorph-name
(reader).
(setf polymorph-name)
(writer).
polymorph-p
(function).
polymorph-parameter
(structure).
polymorph-parameter-p
(function).
polymorph-parameters
(reader).
(setf polymorph-parameters)
(writer).
polymorph-parameters
(structure).
polymorph-parameters-keyword
(reader).
(setf polymorph-parameters-keyword)
(writer).
polymorph-parameters-max-args
(reader).
(setf polymorph-parameters-max-args)
(writer).
polymorph-parameters-min-args
(reader).
(setf polymorph-parameters-min-args)
(writer).
polymorph-parameters-optional
(reader).
(setf polymorph-parameters-optional)
(writer).
polymorph-parameters-p
(function).
polymorph-parameters-required
(reader).
(setf polymorph-parameters-required)
(writer).
polymorph-parameters-rest
(reader).
(setf polymorph-parameters-rest)
(writer).
polymorph-parameters-validator-form
(reader).
(setf polymorph-parameters-validator-form)
(writer).
polymorph-return-type
(reader).
(setf polymorph-return-type)
(writer).
polymorph-runtime-applicable-p-form
(reader).
(setf polymorph-runtime-applicable-p-form)
(writer).
polymorph-source
(reader).
(setf polymorph-source)
(writer).
polymorph-static-dispatch-name
(reader).
(setf polymorph-static-dispatch-name)
(writer).
polymorph-suboptimal-note
(reader).
(setf polymorph-suboptimal-note)
(writer).
polymorph-type-list
(reader).
(setf polymorph-type-list)
(writer).
polymorph-typed-lambda-list
(reader).
(setf polymorph-typed-lambda-list)
(writer).
polymorphic-function-default
(generic reader).
polymorphic-function-dispatch-declaration
(generic reader).
(setf polymorphic-function-dispatch-declaration)
(generic writer).
polymorphic-function-documentation
(generic reader).
(setf polymorphic-function-documentation)
(generic writer).
polymorphic-function-effective-lambda-list
(generic reader).
polymorphic-function-effective-type-lists
(function).
polymorphic-function-invalidated-p
(generic reader).
(setf polymorphic-function-invalidated-p)
(generic writer).
polymorphic-function-lambda-list
(generic reader).
polymorphic-function-lambda-list-type
(generic reader).
polymorphic-function-make-effective-lambda-list
(function).
polymorphic-function-name
(generic reader).
polymorphic-function-polymorphs
(generic reader).
(setf polymorphic-function-polymorphs)
(generic writer).
polymorphic-function-source
(generic reader).
potential-type-of-lambda-list
(function).
pp-default-value-form
(reader).
(setf pp-default-value-form)
(writer).
pp-form-in-pf
(reader).
(setf pp-form-in-pf)
(writer).
pp-local-name
(reader).
(setf pp-local-name)
(writer).
pp-supplied-p-name
(reader).
(setf pp-supplied-p-name)
(writer).
pp-value-effective-type
(reader).
(setf pp-value-effective-type)
(writer).
pp-value-type
(reader).
(setf pp-value-type)
(writer).
recursive-function-p
(function).
register-polymorph
(function).
register-polymorphic-function
(function).
remove-polymorph
(function).
return-type-count-mismatch
(condition).
return-type-count-mismatch/warning
(condition).
return-type-mismatch
(condition).
return-type-mismatch/error
(condition).
return-type-mismatch/warning
(condition).
run-time-applicable-p-form
(function).
sbcl-transform-arg-lvars-from-lambda-list-form
(function).
sbcl-version-spec-integer
(function).
sbcl-version-spec-list
(function).
sort-typed-lambda-list
(function).
sort-untyped-lambda-list
(function).
subtypep-not-known
(condition).
subtypep-using-subtypep-alist
(function).
translate-body
(function).
traverse-tree
(function).
type-list
(type).
type-list-compatible-p
(function).
type-list-intersection-null-p
(function).
type-list-more-specific-p
(function).
type-list-order-keywords
(function).
type-list-p
(function).
type-pair-=
(function).
type-specifier-p
(function).
typed-lambda-list
(type).
typed-lambda-list-p
(function).
untyped-lambda-list
(function).
untyped-lambda-list
(type).
untyped-lambda-list-p
(function).
update-polymorphic-function-documentation
(function).
update-polymorphic-function-lambda
(function).
valid-parameter-name-p
(function).
with-eval-always
(macro).
with-return-type
(macro).
Definitions are sorted by export status, category, package, and then by lexicographic order.
Define a function named NAME that can then be used for DEFPOLYMORPH
for specializing on various argument types.
If OVERWRITE is T, all the existing polymorphs associated with NAME are deleted,
and new polymorphs will be ready to be installed.
If OVERWRITE is NIL, a continuable error is raised if the LAMBDA-LIST has changed.
DEFAULT should be a FUNCTION that can be called with two arguments at run-time
and compile-time in case no polymorph is applicable.
- the first of these arguments is the NAME, while
- the second argument is the argument list with which the polymorphic-function
was called or compiled.
At compile-time *COMPILER-MACRO-EXPANDING-P* is bound to non-NIL.
Expects OPTIONAL or KEY args to be in the form
((A TYPE) DEFAULT-VALUE) or ((A TYPE) DEFAULT-VALUE AP).
- NAME could also be
(NAME
&KEY
STATIC-DISPATCH-NAME
INVALIDATE-PF)
- STATIC-DISPATCH-NAME could be useful for tracing or profiling
- If INVALIDATE-PF is non-NIL then the associated polymorphic-function is forced to recompute its dispatching after this polymorph is defined.
Returns two values:
If a POLYMORPHIC-FUNCTION by NAME does not exist, returns NIL NIL.
If it exists, the second value is T and the first value is a possibly empty
list of POLYMORPHs associated with NAME.
Remove the POLYMORPH(-WRAPPER) defined by DEFINE-POLYMORPH
Remove the POLYMORPH associated with NAME with TYPE-LIST
polymorphic-function
) stream) ¶polymorph-parameters
) s) ¶condition
.
(quote (error "name not specified"))
:name
name
.
This slot is read-only.
(quote (error "args not specified"))
:args
args
.
This slot is read-only.
(quote (error "effective-type-lists not specified"))
:effective-type-lists
This slot is read-only.
- If RUNTIME-APPLICABLE-P-FORM returns true when evaluated inside the lexical environment
of the polymorphic-function, then the dispatch is done on LAMBDA. The prioritization
is done by ADD-OR-UPDATE-POLYMORPH so that a more specialized polymorph is checked
for compatibility before a less specialized polymorph.
- The PF-COMPILER-MACRO calls the COMPILER-APPLICABLE-P-LAMBDA with the FORM-TYPEs
of the arguments derived at compile time. The compiler macro dispatches on the polymorph
at compile time if the COMPILER-APPLICABLE-P-LAMBDA returns true.
- If this POLYMORPH is used for INLINE-ing or STATIC-DISPATCH and if MORE-OPTIMAL-TYPE-LIST
or SUBOPTIMAL-NOTE is non-NIL, then emits a OPTIMIZATION-FAILURE-NOTE
structure-object
.
common-lisp
.
(or null string)
(error "name must be supplied!")
polymorphic-functions::polymorph-parameters
(error "polymorph-parameters must be supplied")
funcallable-standard-object
.
gf-lock
.
polymorphic-function-default
.
(setf polymorphic-function-dispatch-declaration)
.
polymorphic-function-dispatch-declaration
.
(setf polymorphic-function-documentation)
.
polymorphic-function-documentation
.
polymorphic-function-effective-lambda-list
.
(setf polymorphic-function-invalidated-p)
.
polymorphic-function-invalidated-p
.
polymorphic-function-lambda-list
.
polymorphic-function-lambda-list-type
.
polymorphic-function-name
.
(setf polymorphic-function-polymorphs)
.
polymorphic-function-polymorphs
.
polymorphic-function-source
.
print-object
.
(error "name must be supplied.")
:name
This slot is read-only.
:source
This slot is read-only.
list
(error "lambda-list must be supplied.")
:lambda-list
This slot is read-only.
list
(error "effective-lambda-list must be supplied.")
:effective-lambda-list
This slot is read-only.
polymorphic-functions::lambda-list-type
(error "lambda-list-type must be supplied.")
:lambda-list-type
This slot is read-only.
polymorphic-functions::+optimize-speed-or-compilation-speed+
:dispatch-declaration
function
(error ":default must be supplied")
:default
This slot is read-only.
common-lisp
.
(or string null)
:documentation
Bound to T inside the DEFINE-COMPILER-MACRO defined in DEFINE-POLYMORPH
If value at the time of compilation of the call-site is non-NIL,
the polymorphic-function being called at the call-site is dispatched dynamically.
Bound inside the DEFINE-COMPILER-MACRO defined in DEFINE-POLYMORPH for use by functions like TYPE-LIST-APPLICABLE-P
A list of function-designators that will be called by EXTENDED-SUBTYPEP.
LAMBDA-LIST of the typed function being compiled. Bound inside the functions defined by POLYMORPHS::DEFINE-LAMBDA-LIST-HELPER
Is T if the *LAMBDA-LIST* being processed is to be treated as if it had type specifiers. Bound inside the functions defined by POLYMORPHS::DEFINE-LAMBDA-LIST-HELPER
NAME of the typed function being compiled. Bound inside DEFINE-POLYMORPH
POTENTIAL-TYPE of the LAMBDA-LIST of the typed function being compiled. Bound inside the functions defined by POLYMORPHS::DEFINE-LAMBDA-LIST-HELPER
An ALIST mapping a (CONS TYPE1 TYPE2) to a boolean indicating whether TYPE1 is a subtype of TYPE2.
ACTION-FORM should be defined in terms of *POTENTIAL-TYPE* and *LAMBDA-LIST* variables.
Returns T if the POLYMOMRPH with identical effective-type-list existed, otherwise returns NIL.
Like POLYMORPHIC-FUNCTIONS.EXTENDED-TYPES:SUBTYPEP but uses *SUBTYPEP-ALIST*
and *EXTENDED-SUBTYPEP-FUNCTIONS* and when the second value is NIL raises a
restartable error to allow the user to specify whether the TYPE1 is
a definite subtype of TYPE2.
While using non-interactively, recommended way is to modify *SUBTYPEP-ALIST*
and *EXTENDED-SUBTYPEP-FUNCTIONS* rather than invoking-restarts.
The function-order for determining the SUBTYPEP functions is undefined.
Returns two values: a form that has ASSERTs with SIMPLE-TYPE-ERROR to check the type as well as the type enhanced using TYPE.
Returns two values: DECLARATIONS and remaining BODY
If DOCUMENTATION is non-NIL, returns three values: DECLARATIONS and remaining BODY and DOC-STRING
Returns the declaration for the actual polymorph parameters
Returns the type of LAMBDA-LIST from amongst +LAMBDA-LIST-TYPES+. Raises an ERROR otherwise.
Checks whhether the OBJECT is in +LAMBDA-LIST-TYPES+
Returns 3 values:
- The first value is the LAMBDA-LIST suitable for constructing polymorph’s lambda
- The second value is the TYPE-LIST corresponding to the polymorph
- The third value is the EFFECTIVE-TYPE-LIST corresponding to the polymorph
name
.
rest
.
Returns a FORM that can process the parameters of SB-C:DEFTRANSFORM to form an argument lvar alist list suitable for further processing.
Sorts keyword arguments (if any) according to STRING<
Sorts keyword arguments (if any) according to STRING<
Traverses TREE and calls function on each subtree and node of TREE. If FUNCTION returns a list, then traversing the list can be avoided if the second return value is non-NIL. If FUNCTION returns a list, traverses the list only if the second return value is NIL.
Returns T if the given TYPE-LIST is compatible with the given UNTYPED-LAMBDA-LIST.
Returns T if there exist argument lists that are compatible with both TYPE-LIST-1 and TYPE-LIST-2
Returns T if TYPE-LIST-1 is more specialized than TYPE-LIST-2.
If TYPE-LIST-1 is more specialized than TYPE-LIST-2, then that means
that *if* both the type lists were applicable, then the polymorph
with TYPE-LIST-1 list will be chosen over the polymorph with TYPE-LIST-2.
More specialized does not mean all the types in TYPE-LIST-1
are SUBTYPEP of the corresponding types in TYPE-LIST-2.
For instance, (STRING ARRAY) is more specialized than (ARRAY STRING).
See the tests under the suite POLYMORPHIC-FUNCTIONS::TYPE-LIST-MORE-SPECIFIC-P for more examples.
Each pair is a CONS of two types.
Returns true if TYPE-SPECIFIER is a valid type specfiier.
Checks whether LAMBDA-LIST is of type POTENTIAL-LAMBDA-LIST-TYPE
(eql polymorphic-functions::required-key)
) (lambda-list list
)) ¶(eql polymorphic-functions::required-optional)
) (lambda-list list
)) ¶(eql polymorphic-functions::required)
) (lambda-list list
)) ¶Returns a FORM that can process the parameters of SB-C:DEFTRANSFORM to form an argument lvar alist list suitable for further processing.
(eql rest)
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required-key)
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required-optional)
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required)
) (untyped-lambda-list list
)) ¶(eql rest)
) (type-list list
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required-key)
) (type-list list
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required-optional)
) (type-list list
) (untyped-lambda-list list
)) ¶(eql polymorphic-functions::required)
) (type-list list
) (untyped-lambda-list list
)) ¶Returns T if there exist argument lists that are compatible with both TYPE-LIST-1 and TYPE-LIST-2
(eql polymorphic-functions::required-key)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶(eql polymorphic-functions::required-key)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql polymorphic-functions::required)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql polymorphic-functions::required)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql polymorphic-functions::required-key)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql polymorphic-functions::required-optional)
) (type-2 (eql polymorphic-functions::required-optional)
) list-1 list-2) ¶(eql polymorphic-functions::required)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶Returns T if TYPE-LIST-1 is more specialized than TYPE-LIST-2.
If TYPE-LIST-1 is more specialized than TYPE-LIST-2, then that means
that *if* both the type lists were applicable, then the polymorph
with TYPE-LIST-1 list will be chosen over the polymorph with TYPE-LIST-2.
More specialized does not mean all the types in TYPE-LIST-1
are SUBTYPEP of the corresponding types in TYPE-LIST-2.
For instance, (STRING ARRAY) is more specialized than (ARRAY STRING).
See the tests under the suite POLYMORPHIC-FUNCTIONS::TYPE-LIST-MORE-SPECIFIC-P for more examples.
(eql polymorphic-functions::required)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql polymorphic-functions::required-key)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶(eql polymorphic-functions::required-key)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql polymorphic-functions::required)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶(eql rest)
) (type-2 (eql rest)
) list-1 list-2) ¶(eql polymorphic-functions::required-key)
) (type-2 (eql polymorphic-functions::required-key)
) list-1 list-2) ¶(eql polymorphic-functions::required-optional)
) (type-2 (eql polymorphic-functions::required-optional)
) list-1 list-2) ¶(eql polymorphic-functions::required)
) (type-2 (eql polymorphic-functions::required)
) list-1 list-2) ¶no-applicable-polymorph
)) ¶no-applicable-polymorph
)) ¶args
.
Processes LAMBDA-LIST to return the body for the lambda constructed in
UPDATE-POLYMORPHIC-FUNCTION-LAMBDA.
Raises an error if %LAMBDA-LIST-TYPE fails on *POTENTIAL-TYPE*.
If INVALIDATED-P is non-NIL, then emits a dummy body that will first call
UPDATE-POLYMORPHIC-FUNCTION-LAMBDA with INVALIDATE as NIL, and then recall the function.
Can contain CTYPE::CTYPE objects that are not expected dumped.
(eql rest)
) (untyped-lambda-list list
) declaration &optional invalidated-p) ¶(eql polymorphic-functions::required-key)
) (untyped-lambda-list list
) declaration &optional invalidated-p) ¶(eql polymorphic-functions::required-optional)
) (effective-lambda-list list
) declaration &optional invalidated-p) ¶(eql polymorphic-functions::required)
) (untyped-lambda-list list
) declaration &optional invalidated-p) ¶no-applicable-polymorph
)) ¶no-applicable-polymorph
)) ¶name
.
lambda-list-has-changed
)) ¶name
.
lambda-list-has-changed
)) ¶polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated writer method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated writer method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated writer method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated reader method
name
.
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated writer method
polymorphic-function
)) ¶automatically generated reader method
polymorphic-function
)) ¶automatically generated reader method
sb-pcl
.
error
.
(quote (error "name must be supplied!"))
:name
name
.
This slot is read-only.
(quote (error "new lambda list must be supplied!"))
:new-lambda-list
This slot is read-only.
error
.
no-applicable-polymorph
.
return-type-count-mismatch
.
warning
.
error
.
return-type-mismatch
.
:expected
return-type-mismatch
.
warning
.
:declared
LOCAL-NAME : Name inside the body of the polymorph
FORM-IN-PF : The form which yields the parameter’s value inside the lexical
environment of the polymorphic-function
Note: Only LOCAL-NAME and FORM-IN-PF are relevant for &REST parameter
structure-object
.
common-lisp
.
common-lisp
.
Examples:
((a integer) (b integer))
((a integer) &optional ((b integer) 0 b-supplied-p))
Examples:
(a b)
(a b &optional c)
Non-examples:
((a string))
Jump to: | %
(
A B C D E F G I L M N P R S T U V W |
---|
Jump to: | %
(
A B C D E F G I L M N P R S T U V W |
---|
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 |
---|
Jump to: | B C D E F L M N P R S T U |
---|
Jump to: | B C D E F L M N P R S T U |
---|