MzLib: Legacy PLT Libraries

1`` | mzlib/ a-signature
2`` | mzlib/ a-unit
3`` | mzlib/ async-channel
4`` | mzlib/ awk
5`` | mzlib/ class
6`` | mzlib/ class100
7`` | mzlib/ cm
8`` | mzlib/ cm-accomplice
9`` | mzlib/ cmdline
10`` | mzlib/ cml
11`` | mzlib/ compat
12`` | mzlib/ compile
13`` | mzlib/ contract
14`` | mzlib/ control
15`` | mzlib/ date
16`` | mzlib/ deflate
17`` | mzlib/ defmacro
18`` | mzlib/ etc
19`` | mzlib/ file
20`` | mzlib/ for
21`` | mzlib/ foreign
22`` | mzlib/ include
23`` | mzlib/ inflate
24`` | mzlib/ integer-set
25`` | mzlib/ kw
26`` | mzlib/ list
27`` | mzlib/ match
28`` | mzlib/ math
29`` | mzlib/ md5
30`` | mzlib/ os
31`` | mzlib/ pconvert
32`` | mzlib/ pconvert-prop
33`` | mzlib/ plt-match
34`` | mzlib/ port
35`` | mzlib/ pregexp
36`` | mzlib/ pretty
37`` | mzlib/ process
38`` | mzlib/ restart
39`` | mzlib/ runtime-path
40`` | mzlib/ sandbox
41`` | mzlib/ sendevent
42`` | mzlib/ serialize
43`` | mzlib/ shared
44`` | mzlib/ string
45`` | mzlib/ struct
46`` | mzlib/ stxparam
47`` | mzlib/ surrogate
48`` | mzlib/ tar
49`` | mzlib/ thread
50`` | mzlib/ trace
51`` | mzlib/ traceld
52`` | mzlib/ trait
53`` | mzlib/ transcr
54`` | mzlib/ unit
55`` | mzlib/ unit-exptime
56`` | mzlib/ unit200
57`` | mzlib/ unitsig200
58`` | mzlib/ zip
| Bibliography
| Index

On this page:

copy-struct
define-struct/ properties
make->vector

Version: 4.0.2
contents index
← prev up next →

(require mzlib/struct)

(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.

(define-struct/properties id (field-id ...)
((prop-expr val-expr) ...)
maybe-inspector-expr)

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:

> (define-struct/properties point (x y)
([prop:custom-write (lambda (p port write?)
(fprintf port "(~a, ~a)"
(point-x p)
(point-y p)))]))

> (display (make-point 1 2))
(1, 2)

(make->vector struct-id)

Builds a function that accepts a structure type instance (matching struct-id) and provides a vector of the fields of the structure type instance.

contents index
← prev up next →