19 lines
510 B
Scheme
19 lines
510 B
Scheme
|
|
(module utils mzscheme
|
|
|
|
;; Generative structure definitions:
|
|
(define-struct dt (pred-stx variants))
|
|
(define-struct vt (name-stx predicate-stx accessor-stx field-count))
|
|
|
|
;; Helper function:
|
|
(define (variant-assq name-stx variants)
|
|
(let loop ([l variants])
|
|
(if (module-identifier=? name-stx
|
|
(vt-name-stx (car l)))
|
|
(car l)
|
|
(loop (cdr l)))))
|
|
|
|
(provide (struct dt (pred-stx variants))
|
|
(struct vt (name-stx predicate-stx accessor-stx field-count))
|
|
variant-assq))
|