Provide require/typed/provide and require-typed-struct/provide from TR.
This commit is contained in:
parent
03ebf0d3de
commit
593e4a4f1d
|
@ -1,7 +1,6 @@
|
||||||
#lang typed/racket/base
|
#lang typed/racket/base
|
||||||
|
|
||||||
(require typed/private/utils
|
(require (except-in "deep-flomap-untyped-parameters.rkt"
|
||||||
(except-in "deep-flomap-untyped-parameters.rkt"
|
|
||||||
light-direction light-intensity ambient-intensity reflected-intensity
|
light-direction light-intensity ambient-intensity reflected-intensity
|
||||||
refractive-index ideal-reflectance ideal-transmission transmission-density
|
refractive-index ideal-reflectance ideal-transmission transmission-density
|
||||||
specular-reflectance specular-roughness specular-purity
|
specular-reflectance specular-roughness specular-purity
|
||||||
|
|
|
@ -150,6 +150,21 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
||||||
'typechecker:ignore #t)))))]))
|
'typechecker:ignore #t)))))]))
|
||||||
(values (r/t-maker #t) (r/t-maker #f))))
|
(values (r/t-maker #t) (r/t-maker #f))))
|
||||||
|
|
||||||
|
(define-syntax-rule (require/typed/provide lib [nm t] ...)
|
||||||
|
(begin
|
||||||
|
(require/typed lib [nm t] ...)
|
||||||
|
(provide nm ...)))
|
||||||
|
|
||||||
|
(define-syntax require-typed-struct/provide
|
||||||
|
(syntax-rules ()
|
||||||
|
[(_ (nm par) . rest)
|
||||||
|
(begin (require-typed-struct (nm par) . rest)
|
||||||
|
(provide (struct-out nm)))]
|
||||||
|
[(_ nm . rest)
|
||||||
|
(begin (require-typed-struct nm . rest)
|
||||||
|
(provide (struct-out nm)))]))
|
||||||
|
|
||||||
|
|
||||||
(define-syntax (define-predicate stx)
|
(define-syntax (define-predicate stx)
|
||||||
(syntax-parse stx
|
(syntax-parse stx
|
||||||
[(_ name:id ty:expr)
|
[(_ name:id ty:expr)
|
||||||
|
|
|
@ -14,6 +14,8 @@ compatibility.
|
||||||
keyword with @racket[require/typed].}
|
keyword with @racket[require/typed].}
|
||||||
@defidform[require-typed-struct]{Similar to using the @racket[struct]
|
@defidform[require-typed-struct]{Similar to using the @racket[struct]
|
||||||
keyword with @racket[require/typed].}
|
keyword with @racket[require/typed].}
|
||||||
|
@defidform[require-typed-struct/provide]{Similar to
|
||||||
|
@racket[require-typed-struct], but also provides the imported identifiers.}
|
||||||
@defidform[pdefine:]{Defines a polymorphic function.}
|
@defidform[pdefine:]{Defines a polymorphic function.}
|
||||||
@defform[(pred t)]{Equivalent to @racket[(Any -> Boolean : t)].}
|
@defform[(pred t)]{Equivalent to @racket[(Any -> Boolean : t)].}
|
||||||
|
|
||||||
|
|
|
@ -391,6 +391,10 @@ a @racket[require/typed] form. Here is an example of using
|
||||||
@racket[file-or-directory-modify-seconds] has some arguments which are optional,
|
@racket[file-or-directory-modify-seconds] has some arguments which are optional,
|
||||||
so we need to use @racket[case->].}
|
so we need to use @racket[case->].}
|
||||||
|
|
||||||
|
@defform[(require/typed/provide m rt-clause ...)]{
|
||||||
|
Similar to @racket[require/typed], but also provides the imported identifiers.
|
||||||
|
}
|
||||||
|
|
||||||
@section{Other Forms}
|
@section{Other Forms}
|
||||||
|
|
||||||
@defidform[with-handlers]{
|
@defidform[with-handlers]{
|
||||||
|
|
|
@ -3,18 +3,4 @@
|
||||||
(define-syntax-rule (dt nm t)
|
(define-syntax-rule (dt nm t)
|
||||||
(begin (define-type-alias nm t) (provide nm)))
|
(begin (define-type-alias nm t) (provide nm)))
|
||||||
|
|
||||||
(define-syntax-rule (require/typed/provide lib [nm t] ...)
|
(provide dt)
|
||||||
(begin
|
|
||||||
(require/typed lib [nm t] ...)
|
|
||||||
(provide nm ...)))
|
|
||||||
|
|
||||||
(define-syntax require-typed-struct/provide
|
|
||||||
(syntax-rules ()
|
|
||||||
[(_ (nm par) . rest)
|
|
||||||
(begin (require-typed-struct (nm par) . rest)
|
|
||||||
(provide (struct-out nm)))]
|
|
||||||
[(_ nm . rest)
|
|
||||||
(begin (require-typed-struct nm . rest)
|
|
||||||
(provide (struct-out nm)))]))
|
|
||||||
|
|
||||||
(provide dt require/typed/provide require-typed-struct/provide)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user