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
|
||||
|
||||
(require typed/private/utils
|
||||
(except-in "deep-flomap-untyped-parameters.rkt"
|
||||
(require (except-in "deep-flomap-untyped-parameters.rkt"
|
||||
light-direction light-intensity ambient-intensity reflected-intensity
|
||||
refractive-index ideal-reflectance ideal-transmission transmission-density
|
||||
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)))))]))
|
||||
(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)
|
||||
(syntax-parse stx
|
||||
[(_ name:id ty:expr)
|
||||
|
|
|
@ -14,6 +14,8 @@ compatibility.
|
|||
keyword with @racket[require/typed].}
|
||||
@defidform[require-typed-struct]{Similar to using the @racket[struct]
|
||||
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.}
|
||||
@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,
|
||||
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}
|
||||
|
||||
@defidform[with-handlers]{
|
||||
|
|
|
@ -3,18 +3,4 @@
|
|||
(define-syntax-rule (dt nm t)
|
||||
(begin (define-type-alias nm t) (provide nm)))
|
||||
|
||||
(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)))]))
|
||||
|
||||
(provide dt require/typed/provide require-typed-struct/provide)
|
||||
(provide dt)
|
||||
|
|
Loading…
Reference in New Issue
Block a user