fix no-check
svn: r18362 original commit: 5d3e46bb2f098eac10678e1d4d401c2f0401f382
This commit is contained in:
parent
d98d962195
commit
e3cf00137d
|
@ -1,31 +1,50 @@
|
|||
#lang scheme/base
|
||||
|
||||
#;(require "private/prims.ss")
|
||||
(require (except-in "private/prims.ss" require/typed require/opaque-type require-typed-struct))
|
||||
(provide (all-from-out scheme/base)
|
||||
(all-defined-out)
|
||||
#;(all-from-out "private/prims.ss"))
|
||||
(all-from-out "private/prims.ss"))
|
||||
|
||||
(define-syntax-rule (define-type-alias . _) (begin))
|
||||
(define-syntax (require/typed stx)
|
||||
(define-syntax-class opt-rename
|
||||
#:attributes (nm spec)
|
||||
(pattern nm:id
|
||||
#:with spec #'nm)
|
||||
(pattern (orig-nm:id internal-nm:id)
|
||||
#:with spec #'(orig-nm internal-nm)
|
||||
#:with nm #'internal-nm))
|
||||
(define-syntax-class simple-clause
|
||||
#:attributes (nm ty)
|
||||
(pattern [nm:opt-rename ty]))
|
||||
(define-syntax-class struct-clause
|
||||
;#:literals (struct)
|
||||
#:attributes (nm (body 1))
|
||||
(pattern [struct nm:opt-rename (body ...)]
|
||||
#:fail-unless (eq? 'struct (syntax-e #'struct)) #f))
|
||||
(define-syntax-class opaque-clause
|
||||
;#:literals (opaque)
|
||||
#:attributes (ty pred opt)
|
||||
(pattern [opaque ty:id pred:id]
|
||||
#:fail-unless (eq? 'opaque (syntax-e #'opaque)) #f
|
||||
#:with opt #'())
|
||||
(pattern [opaque ty:id pred:id #:name-exists]
|
||||
#:fail-unless (eq? 'opaque (syntax-e #'opaque)) #f
|
||||
#:with opt #'(#:name-exists)))
|
||||
(syntax-parse stx
|
||||
[(_ lib (~or sc:simple-clause strc:struct-clause oc:opaque-clause) ...)
|
||||
#'(begin
|
||||
(require/opaque-type oc.ty oc.pred lib . oc.opt) ...
|
||||
(require/typed sc.nm sc.ty lib) ...
|
||||
(require-typed-struct strc.nm (strc.body ...) lib) ...)]
|
||||
[(_ nm:opt-rename ty lib (~optional [~seq #:struct-maker parent]) ...)
|
||||
#'(require (only-in lib nm.spec))]))
|
||||
|
||||
(define-syntax-rule (define: nm _ _ . body)
|
||||
(define nm . body))
|
||||
(define-syntax-rule (require/opaque-type ty pred lib . _)
|
||||
(require (only-in lib pred)))
|
||||
|
||||
(define-syntax-rule (ann e . rest) e)
|
||||
(define-syntax-rule (inst e . rest) e)
|
||||
(define-syntax (require-typed-struct stx)
|
||||
(syntax-parse stx #:literals (:)
|
||||
[(_ (~or nm:id (nm:id _:id)) ([fld : ty] ...) lib)
|
||||
(with-syntax ([(struct-info maker pred sel ...) (build-struct-names #'nm (syntax->list #'(fld ...)) #f #t)])
|
||||
#'(require (only-in lib struct-info maker pred sel ...)) ...)]))
|
||||
|
||||
(define-syntax-rule (require/typed mod [id . _] ...)
|
||||
(require (only-in mod id ...)))
|
||||
|
||||
(define-syntax-rule (: . args) (begin))
|
||||
|
||||
(define-syntax let:
|
||||
(syntax-rules ()
|
||||
[(_ ([id _ _ . rest] ...) . b)
|
||||
(let ([id . rest] ...) . b)]
|
||||
[(_ id _ _ ([ids _ _ e] ...) . b)
|
||||
(let id ([ids e] ...) . b)]))
|
||||
|
||||
(define-syntax-rule (lambda: ([id . rest] ...) . b)
|
||||
(lambda (id ...) . b))
|
||||
|
||||
(define-syntax-rule (λ: . arg) (lambda: . arg))
|
||||
|
|
Loading…
Reference in New Issue
Block a user