Add #:omit-define-syntaxes
to define-type
.
original commit: ecf02a32b4e2431e57f77da4f497fcb8f62426ec
This commit is contained in:
parent
20a01d0a03
commit
c0b5f31c90
|
@ -0,0 +1,9 @@
|
|||
#lang typed/racket
|
||||
|
||||
(define-syntax (x stx) #'5)
|
||||
|
||||
(define-type x Number #:omit-define-syntaxes)
|
||||
|
||||
(ann 7 x)
|
||||
|
||||
(add1 x)
|
|
@ -450,9 +450,13 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
|
||||
(define-syntax (define-type-alias stx)
|
||||
(syntax-parse stx
|
||||
[(_ tname:id rest)
|
||||
[(_ tname:id rest (~optional (~and omit #:omit-define-syntaxes)
|
||||
#:defaults
|
||||
([omit #f])))
|
||||
#`(begin
|
||||
#,(ignore #'(define-syntax tname (lambda (stx) (raise-syntax-error 'type-check "type name used out of context" stx))))
|
||||
#,(if (not (attribute omit))
|
||||
(ignore #'(define-syntax tname (lambda (stx) (raise-syntax-error 'type-check "type name used out of context" stx))))
|
||||
#'(begin))
|
||||
#,(internal (syntax/loc stx (define-type-alias-internal tname rest))))]
|
||||
[(_ (tname:id args:id ...) rest)
|
||||
(syntax/loc stx (define-type-alias tname (All (args ...) rest)))]))
|
||||
|
|
|
@ -285,8 +285,10 @@ corresponding to @racket[define-struct].}
|
|||
The procdure @racket[e] is used as the value for @racket[prop:procedure], and must have type @racket[proc-t].}
|
||||
|
||||
@section{Names for Types}
|
||||
@defform*[[(define-type name t)
|
||||
(define-type (name v ...) t)]]{
|
||||
@defform*[[(define-type name t maybe-omit-def)
|
||||
(define-type (name v ...) t maybe-omit-def)]
|
||||
#:grammar
|
||||
[(maybe-omit-def (code:line #:omit-define-syntaxes) (code:line))]]{
|
||||
The first form defines @racket[name] as type, with the same meaning as
|
||||
@racket[t]. The second form is equivalent to
|
||||
@racket[(define-type name (All (v ...) t))]. Type names may
|
||||
|
@ -294,7 +296,11 @@ refer to other types defined in the same module, but
|
|||
cycles among them are prohibited.
|
||||
|
||||
@ex[(define-type IntStr (U Integer String))
|
||||
(define-type (ListofPairs A) (Listof (Pair A A)))]}
|
||||
(define-type (ListofPairs A) (Listof (Pair A A)))]
|
||||
|
||||
If @racket[#:omit-define-syntaxes] is specified, no definition of
|
||||
@racket[name] is created. In this case, some other definition of @racket[name]
|
||||
is necessary.}
|
||||
|
||||
@section{Generating Predicates Automatically}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user