Add #:when to more places in match docs
Also adjusted some examples a bit
This commit is contained in:
parent
23a0823dec
commit
acc4e92a71
|
@ -378,7 +378,8 @@ appear in the original program.
|
||||||
|
|
||||||
@defform/subs[(match* (val-expr ...+) clause* ...)
|
@defform/subs[(match* (val-expr ...+) clause* ...)
|
||||||
([clause* [(pat ...+) body ...+]
|
([clause* [(pat ...+) body ...+]
|
||||||
[(pat ...+) (=> id) body ...+]])]{
|
[(pat ...+) (=> id) body ...+]
|
||||||
|
[(pat ...+) #:when cond-expr body ...+]])]{
|
||||||
Matches a sequence of values against each clause in order, matching
|
Matches a sequence of values against each clause in order, matching
|
||||||
only when all patterns in a clause match. Each clause must have the
|
only when all patterns in a clause match. Each clause must have the
|
||||||
same number of patterns as the number of @racket[val-expr]s.
|
same number of patterns as the number of @racket[val-expr]s.
|
||||||
|
@ -386,6 +387,10 @@ same number of patterns as the number of @racket[val-expr]s.
|
||||||
@examples[#:eval match-eval
|
@examples[#:eval match-eval
|
||||||
(match* (1 2 3)
|
(match* (1 2 3)
|
||||||
[(_ (? number?) x) (add1 x)])
|
[(_ (? number?) x) (add1 x)])
|
||||||
|
(match* (15 17)
|
||||||
|
[((? number? a) (? number? b))
|
||||||
|
#:when (= (+ a 2) b)
|
||||||
|
'diff-by-two])
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +412,8 @@ many values to expect from @racket[expr].
|
||||||
(code:line keyword arg-id)
|
(code:line keyword arg-id)
|
||||||
(code:line keyword [arg-id default-expr])]
|
(code:line keyword [arg-id default-expr])]
|
||||||
[match*-clause [(pat ...+) body ...+]
|
[match*-clause [(pat ...+) body ...+]
|
||||||
[(pat ...+) (=> id) body ...+]])
|
[(pat ...+) (=> id) body ...+]
|
||||||
|
[(pat ...+) #:when cond-expr body ...+]])
|
||||||
]{
|
]{
|
||||||
Binds @racket[id] to a procedure that is defined by pattern matching
|
Binds @racket[id] to a procedure that is defined by pattern matching
|
||||||
clauses using @racket[match*]. Each clause takes a sequence of
|
clauses using @racket[match*]. Each clause takes a sequence of
|
||||||
|
@ -415,15 +421,17 @@ many values to expect from @racket[expr].
|
||||||
The arguments are ordered as they appear in the function header for
|
The arguments are ordered as they appear in the function header for
|
||||||
matching purposes.
|
matching purposes.
|
||||||
|
|
||||||
The function header may contain optional or keyword arguments, or
|
|
||||||
may be in curried form.
|
|
||||||
|
|
||||||
@defexamples[#:eval match-eval
|
@defexamples[#:eval match-eval
|
||||||
(define/match (fact n)
|
(define/match (fact n)
|
||||||
[(0) 1]
|
[(0) 1]
|
||||||
[(n) (* n (fact (sub1 n)))])
|
[(n) (* n (fact (sub1 n)))])
|
||||||
(fact 5)
|
(fact 5)
|
||||||
|
]
|
||||||
|
|
||||||
|
The function header may also contain optional or keyword arguments,
|
||||||
|
may have curried arguments, and may also contain a rest argument.
|
||||||
|
|
||||||
|
@defexamples[#:eval match-eval
|
||||||
(define/match ((f x) #:y [y '(1 2 3)])
|
(define/match ((f x) #:y [y '(1 2 3)])
|
||||||
[((regexp #rx"p+") `(,a 2 3)) a]
|
[((regexp #rx"p+") `(,a 2 3)) a]
|
||||||
[(_ _) #f])
|
[(_ _) #f])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user