compatibility/collects/racket/private/old-ds.rkt
Matthew Flatt 7b544af2a5 move most of the 'scheme' collection to the 'racket' collection
original commit: c95a39875453e7f057395a7bf626e5d2ed732e7e
2010-04-20 15:24:48 -06:00

34 lines
1.1 KiB
Racket

(module old-ds '#%kernel
(#%require "define-struct.ss"
(for-syntax '#%kernel
"stxcase-scheme.ss"))
(#%provide define-struct let-struct datum)
(define-syntaxes (define-struct)
(lambda (stx)
(with-syntax ([orig stx])
(syntax-case stx ()
[(_ base (field ...))
#'(define-struct/derived orig base (field ...) #:mutable)]
[(_ base (field ...) insp)
(with-syntax ([insp
(if (keyword? (syntax-e #'insp))
(datum->syntax #'insp
(cons '#%datum #'insp)
#'insp)
#'insp)])
#'(define-struct/derived orig base (field ...) #:mutable #:inspector insp))]))))
(define-syntaxes (let-struct)
(syntax-rules ()
[(_ base (field ...) body1 body ...)
(let-values ()
(define-struct base (field ...))
body1 body ...)]))
(define-syntaxes (datum)
(syntax-rules ()
[(_ . any) (quote any)])))