▼ |  | Unstable

1 | Guidelines for developing unstable libraries
2 | Bytes
3 | Contracts
4 | Exceptions
5 | Lists
6 | Net
7 | Path
8 | Source Locations
9 | Strings
10 | Structs
11 | Syntax
12 | Anaphoric Contracts
13 | Finding Mutated Variables
14 | Find
15 | Interface-Oriented Programming for Classes
16 | Sequences
17 | Hash Tables
18 | Match
19 | Skip Lists
20 | Interval Maps
21 | GUI libraries

On this page:

make
struct->list

Version: 4.2.4
top← prev up next →

### 10`` Structs

Ryan Culpepper <ryanc@plt-scheme.org>

(require unstable/struct)

This library is unstable; compatibility will not be maintained. See Unstable for more information.

(make struct-id expr ...)

Creates an instance of struct-id, which must be bound as a struct name. The number of exprs is statically checked against the number of fields associated with struct-id. If they are different, or if the number of fields is not known, an error is raised at compile time.

Examples:
> (define-struct triple (a b c))
> (make triple 3 4 5)
#<triple>
> (make triple 2 4)
eval:4:0: make: wrong number of arguments for struct triple
(expected 3) in: (make triple 2 4)

(struct->list v [#:on-opaque on-opaque]) → (or/c list? #f)
v : any/c
on-opaque : (or/c 'error 'return-false 'skip) = 'error

Returns a list containing the struct instance v’s fields. Unlike struct->vector, the struct name itself is not included.

If any fields of v are inaccessible via the current inspector the behavior of struct->list is determined by on-opaque. If on-opaque is 'error (the default), an error is raised. If it is 'return-false, struct->list returns #f. If it is 'skip, the inaccessible fields are omitted from the list.

Examples:
> (define-struct open (u v) #:transparent)
> (struct->list (make-open 'a 'b))
(a b)
> (struct->list #s(pre 1 2 3))
(1 2 3)
> (define-struct (secret open) (x y))
> (struct->list (make-secret 0 1 17 22))
struct->list: expected argument of type <non-opaque
struct>; given #(struct:secret 0 1 ...)
> (struct->list (make-secret 0 1 17 22) #:on-opaque 'return-false)
#f
> (struct->list (make-secret 0 1 17 22) #:on-opaque 'skip)
(0 1)
> (struct->list 'not-a-struct #:on-opaque 'return-false)
#f
> (struct->list 'not-a-struct #:on-opaque 'skip)
()

top← prev up next →