(module ex-struct mzscheme
(require "../struct.ss")
(require (lib "pretty.ss"))
(define-syntax go
(syntax-rules ()
[(_ form)
(begin '(pretty-print (syntax-object->datum (expand-once #'form)))
form)]))
(define-struct-property prop:foo)
(define-struct-property prop:bar)
(define-struct* A [x y z])
(define-struct* B
[q (r (#:immutable)) c]
(#:procedure (lambda (self) (list (B-q self) (B-r self))))
(#:property prop:foo 'baker)
(#:property prop:bar 'present)
#:transparent #:subst)
(define-struct* C
[a (b (#:auto))]
(#:property prop:foo 'charlie)
(#:auto-value 'b)
#:transparent)
(define-struct* Bprime
[]
(#:super B)
#:transparent)
(define a1 (make-A 'athens 'sparta 'olympia))
(define b1 (make-B 'three 'fifty (lambda _ 'loch-ness)))
(define c1 (make-C 'a))
)