9.3 Instance Creation and Slot Access

An instance (or object) of a defined class can be created with
make. make takes one mandatory parameter, which is the
class of the instance to create, and a list of optional arguments that
will be used to initialize the slots of the new instance. For instance
the following form

(define c (make <my-complex>))

creates a new <my-complex> object and binds it to the Scheme
variable c.

generic: make

method: make (class <class>) . initargs

Create and return a new instance of class class, initialized using
initargs.

In theory, initargs can have any structure that is understood by
whatever methods get applied when the initialize generic function
is applied to the newly allocated instance.

In practice, specialized initialize methods would normally call
(next-method), and so eventually the standard GOOPS
initialize methods are applied. These methods expect
initargs to be a list with an even number of elements, where
even-numbered elements (counting from zero) are keywords and
odd-numbered elements are the corresponding values.

GOOPS processes initialization argument keywords automatically for slots
whose definition includes the #:init-keyword option (see section init-keyword). Other keyword value pairs can only be
processed by an initialize method that is specialized for the new
instance’s class. Any unprocessed keyword value pairs are ignored.

generic: make-instance

method: make-instance (class <class>) . initargs

make-instance is an alias for make.

The slots of the new complex number can be accessed using
slot-ref and slot-set!. slot-set! sets the value
of an object slot and slot-ref retrieves it.