8.6.2 Extending Primitives

Many of Guile’s primitive procedures can be extended by giving them a generic function definition that operates in conjunction with their normal C-coded implementation. When a primitive is extended in this way, it behaves like a generic function with the C-coded implementation as its default method.

This extension happens automatically if a method is defined (by a define-method call) for a variable whose current value is a primitive. But it can also be forced by calling enable-primitive-generic!.

primitive procedure: enable-primitive-generic! primitive

Force the creation of a generic function definition for primitive.

Once the generic function definition for a primitive has been created, it can be retrieved using primitive-generic-generic.

primitive procedure: primitive-generic-generic primitive

Return the generic function definition of primitive.

primitive-generic-generic raises an error if primitive is not a primitive with generic capability.