racket/collects/eopl/private/utils.rkt
2013-02-23 02:09:56 -05:00

17 lines
448 B
Racket

#lang racket/base
;; Generative structure definitions:
(define-struct dt (pred-stx variants) #:mutable)
(define-struct vt (name-stx predicate-stx accessor-stx field-count) #:mutable)
;; Helper function:
(define (variant-assq name-stx variants)
(let loop ([l variants])
(if (free-identifier=? name-stx (vt-name-stx (car l)))
(car l)
(loop (cdr l)))))
(provide (struct-out dt)
(struct-out vt)
variant-assq)