all vector procedures can be used and vectors have a read/write syntax
define a record type
(define-record my-record a b c) (define-record my-other-record (a my-a-accessor-name my-a-setter-name) b (c my-c-accessor-name))
create record instances
(define one-element (record my-record 1 2 3)) (define another-element (record my-record #f "b")) (define a-third-element (record my-record))
access and modify instances
(my-record-b one-element) (my-record-c-set! one-element 4) (my-record-c-set! another-element "custom-value")
unquoted-symbol/(field-name [accessor-identifier setter-identifier])
(define-record my-record a b c)
this implicitly defines the procedures my-record-a, my-record-b, my-record-c to access record values for the corresponding fields for any record instance, and it also defines the procedures my-record-a-set!, my-record-b-set!, my-record-c-set! to set record values
(define-record my-record (a my-a-accessor-name my-a-setter-name) b (c my-c-accessor-name))
here "c" gets a custom accessor name but the default setter "my-record-c-set!", "a" gets a custom accessor and setter name, and "b" gets the default accessor and setter name