compatibility/collects/racket/private/old-ds.rkt
Eli Barzilay bc4b4c6168 Some random ".ss" -> ".rkt"s
original commit: 939af28a4c94c283f46eb121574e4131f12cba53
2010-05-17 05:58:19 -04:00

34 lines
1.1 KiB
Racket

(module old-ds '#%kernel
(#%require "define-struct.rkt"
(for-syntax '#%kernel
"stxcase-scheme.rkt"))
(#%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)])))