Next: , Previous: Optional Arguments, Up: Procedures and Macros

5.8.4 Procedure Properties and Meta-information

Procedures always have attached the environment in which they were created and information about how to apply them to actual arguments. In addition to that, properties and meta-information can be stored with procedures. The procedures in this section can be used to test whether a given procedure satisfies a condition; and to access and set a procedure's property.

The first group of procedures are predicates to test whether a Scheme object is a procedure, or a special procedure, respectively. procedure? is the most general predicates, it returns #t for any kind of procedure. closure? does not return #t for primitive procedures, and thunk? only returns #t for procedures which do not accept any arguments.

— Scheme Procedure: procedure? obj
— C Function: scm_procedure_p (obj)

Return #t if obj is a procedure.

— Scheme Procedure: closure? obj
— C Function: scm_closure_p (obj)

Return #t if obj is a closure.

— Scheme Procedure: thunk? obj
— C Function: scm_thunk_p (obj)

Return #t if obj is a thunk.

Procedure properties are general properties to be attached to procedures. These can be the name of a procedure or other relevant information, such as debug hints.

— Scheme Procedure: procedure-name proc
— C Function: scm_procedure_name (proc)

Return the name of the procedure proc

— Scheme Procedure: procedure-source proc
— C Function: scm_procedure_source (proc)

Return the source of the procedure proc.

— Scheme Procedure: procedure-environment proc
— C Function: scm_procedure_environment (proc)

Return the environment of the procedure proc.

— Scheme Procedure: procedure-properties proc
— C Function: scm_procedure_properties (proc)

Return obj's property list.

— Scheme Procedure: procedure-property obj key
— C Function: scm_procedure_property (obj, key)

Return the property of obj with name key.

— Scheme Procedure: set-procedure-properties! proc alist
— C Function: scm_set_procedure_properties_x (proc, alist)

Set obj's property list to alist.

— Scheme Procedure: set-procedure-property! obj key value
— C Function: scm_set_procedure_property_x (obj, key, value)

In obj's property list, set the property named key to value.

Documentation for a procedure can be accessed with the procedure procedure-documentation.

— Scheme Procedure: procedure-documentation proc
— C Function: scm_procedure_documentation (proc)

Return the documentation string associated with proc. By convention, if a procedure contains more than one expression and the first expression is a string constant, that string is assumed to contain documentation for that procedure.