Added annotated versions of the for macros that generate vectors.
They are purposedly left out of the documentation since the typchecker can't currently handle their expansion. original commit: a10d145f25dd4257dd216ea0b1e97184a29c7683
This commit is contained in:
parent
f991c65bb7
commit
b03abef7ff
|
@ -79,3 +79,9 @@
|
|||
(for/and: : Boolean
|
||||
((i : Exact-Positive-Integer '(1 2 3)))
|
||||
(< i 3))
|
||||
|
||||
;; for/vector: would need stronger inference. same for for*/vector and
|
||||
;; both flvector variants
|
||||
(for/vector: : (Vectorof Integer)
|
||||
((x : Integer (in-range 10)))
|
||||
x)
|
||||
|
|
|
@ -33,6 +33,7 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
(rename-in racket/contract [-> c->])
|
||||
"base-types.rkt"
|
||||
"base-types-extra.rkt"
|
||||
racket/flonum ; for for/flvector and for*/flvector
|
||||
(for-syntax
|
||||
syntax/parse
|
||||
syntax/private/util
|
||||
|
@ -511,8 +512,8 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
(quasisyntax/loc
|
||||
stx
|
||||
(begin (define-syntax name (define-for-variant #'untyped-name)) ...))]))
|
||||
;; for/hash{,eq,eqv}:, for/and:, for/first: and for/last:'s expansions
|
||||
;; can't currently be handled by the typechecker.
|
||||
;; for/hash{,eq,eqv}:, for/vector:, for/flvector:, for/and:, for/first: and
|
||||
;; for/last:'s expansions can't currently be handled by the typechecker.
|
||||
;; They have been left out of the documentation.
|
||||
(define-for-variants
|
||||
(for/list: for/list)
|
||||
|
@ -522,7 +523,9 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
(for/and: for/and)
|
||||
(for/or: for/or)
|
||||
(for/first: for/first)
|
||||
(for/last: for/last))
|
||||
(for/last: for/last)
|
||||
(for/vector: for/vector)
|
||||
(for/flvector: for/flvector))
|
||||
|
||||
;; Unlike with the above, the inferencer can handle any number of #:when
|
||||
;; clauses with these 2.
|
||||
|
@ -595,7 +598,9 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
(for*/and: for*/and)
|
||||
(for*/or: for*/or)
|
||||
(for*/first: for*/first)
|
||||
(for*/last: for*/last))
|
||||
(for*/last: for*/last)
|
||||
(for*/vector: for*/vector)
|
||||
(for*/flvector: for*/flvector))
|
||||
|
||||
(define-for-syntax (define-for*-folding-variant name)
|
||||
(lambda (stx)
|
||||
|
|
|
@ -309,6 +309,8 @@ the return type of a @racket[for] form is optional. Unlike
|
|||
@;@defform[(for/hash: : u (for:-clause ...) expr ...+)] @; the ones that are commented out don't currently work
|
||||
@;@defform[(for/hasheq: : u (for:-clause ...) expr ...+)]
|
||||
@;@defform[(for/hasheqv: : u (for:-clause ...) expr ...+)]
|
||||
@;@defform[(for/vector: : u (for:-clause ...) expr ...+)]
|
||||
@;@defform[(for/flvector: : u (for:-clause ...) expr ...+)]
|
||||
@;@defform[(for/and: : u (for:-clause ...) expr ...+)]
|
||||
@defform[(for/or: : u (for:-clause ...) expr ...+)]
|
||||
@;@defform[(for/first: : u (for:-clause ...) expr ...+)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user