(copy-struct struct-id struct-expr | (accessor-id field-expr) ...) |
|
“Functional update” for structure instances. The result of
evaluating
struct-expr must be an instance of the structure
type named by
struct-id. The result of the
copy-struct expression is a fresh instance of
struct-id with the same field values as the result of
struct-expr, except that the value for the field accessed by
each
accessor-id is replaced by the result of
field-expr.
The result of struct-expr might be an instance of a sub-type
of struct-id, but the result of the copy-struct
expression is an immediate instance of struct-id. If
struct-expr does not produce an instance of
struct-id, the exn:fail:contract exception is
raised.
If any accessor-id is not bound to an accessor of
struct-id (according to the expansion-time information
associated with struct-id), or if the same
accessor-id is used twice, then a syntax error is raised.
|
|
maybe-inspector-expr | | = | | | | | | | | expr |
|
Like
define-struct from
mzscheme, but
properties can be attached to the structure type. Each
prop-expr should produce a structure-type property value, and
each
val-expr produces the corresponding value for the
property.
Examples: |
|
> (display (make-point 1 2)) |
(1, 2) |
Builds a function that accepts a structure type instance (matching
struct-id) and provides a vector of the fields of the
structure type instance.