Next: Method Storage, Previous: Generic Procedures, Up: Generic Procedures
The following definitions are used to construct and inspect generic procedures.
Creates and returns a new generic procedure. The generic procedure requires arity arguments.
Arity may take one of the following forms. An exact positive integer specifies that the procedure will accept exactly that number of arguments. A pair of two exact positive integers specifies inclusive lower and upper bounds, respectively, on the number of arguments accepted; the cdr may be
#f
indicating no upper bound.Name is used for debugging: it is a symbol that has no role in the semantics of the generic procedure. Name may be
#f
to indicate that the generic procedure is anonymous. If name is not specified, it defaults to#f
.Examples:
(define foo-bar (make-generic-procedure 2)) (define foo-baz (make-generic-procedure '(1 . 2) 'foo-baz)) (define foo-mum (make-generic-procedure '(1 . #f)))
Defines name to be a generic procedure. Lambda-list is an ordinary parameter list, which is exactly like the parameter list in a
lambda
special form. This expands into(define name (make-generic-procedure arity (quote name)))where arity is determined from lambda-list.
Examples (compare to examples of
make-generic-procedure
):(define-generic foo-bar (x y)) (define-generic foo-baz (x #!optional y)) (define-generic foo-mum (x . y))
Returns
#t
if object is a generic procedure, otherwise returns#f
. Note that every generic procedure satisfies the predicateprocedure?
.