example/ex-struct.scm
(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))
  )