Next: , Previous: , Up: syntaxes   [Contents][Index]


5.3 Constructors and destructors

The syntaxes new and delete allow us to retrieve the constructor and destructor functions of Scheme objects of some types. For example, with records:

(define-record-type duo
  (fields one two)
  (destructor-protocol
    (lambda ()
      (lambda (self)
        (fprintf (current-error-port) "destroying ~s\n" self)))))

(define O
  (new duo 1 2))

(delete O)
-| destroying #[record duo one=1 two=2]

The following syntactic bindings are exported by the library (vicare).

Syntax: new ?type ?arg

Retrieve the default constructor function of the type type-name and apply it to the given arguments; return the result of the application.

Syntax: delete ?expr

Retrieve the destructor function, if any, of the object returned by the evaluation of the expression ?expr and apply it to the object; return the return value of the application. The evaluation of ?expr must return a single return value.

If the object has no destructor function: an exception is raised.

The destructor function must return zero values.