From 593e4a4f1d4c8bd663d24d45d6c4190c1ce2c86a Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Fri, 10 Feb 2012 11:09:11 -0500 Subject: [PATCH] Provide require/typed/provide and require-typed-struct/provide from TR. --- .../images/private/deep-flomap-parameters.rkt | 3 +-- collects/typed-racket/base-env/prims.rkt | 15 +++++++++++++++ .../scribblings/reference/legacy.scrbl | 2 ++ .../scribblings/reference/special-forms.scrbl | 4 ++++ collects/typed/private/utils.rkt | 16 +--------------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/collects/images/private/deep-flomap-parameters.rkt b/collects/images/private/deep-flomap-parameters.rkt index 849000f511..1c9220a394 100644 --- a/collects/images/private/deep-flomap-parameters.rkt +++ b/collects/images/private/deep-flomap-parameters.rkt @@ -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 diff --git a/collects/typed-racket/base-env/prims.rkt b/collects/typed-racket/base-env/prims.rkt index 961bfbd26f..5b4fb0688d 100644 --- a/collects/typed-racket/base-env/prims.rkt +++ b/collects/typed-racket/base-env/prims.rkt @@ -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) diff --git a/collects/typed-racket/scribblings/reference/legacy.scrbl b/collects/typed-racket/scribblings/reference/legacy.scrbl index f9bd6a7c30..128f9fd451 100644 --- a/collects/typed-racket/scribblings/reference/legacy.scrbl +++ b/collects/typed-racket/scribblings/reference/legacy.scrbl @@ -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)].} diff --git a/collects/typed-racket/scribblings/reference/special-forms.scrbl b/collects/typed-racket/scribblings/reference/special-forms.scrbl index cb988237f1..efb12df52f 100644 --- a/collects/typed-racket/scribblings/reference/special-forms.scrbl +++ b/collects/typed-racket/scribblings/reference/special-forms.scrbl @@ -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]{ diff --git a/collects/typed/private/utils.rkt b/collects/typed/private/utils.rkt index 46ef552449..7fadcec2fd 100644 --- a/collects/typed/private/utils.rkt +++ b/collects/typed/private/utils.rkt @@ -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)