Added another example for for/fold/derived: for/max.
Updated example for for/digits to avoid confusion: it's not clear otherwise that the intentional syntax error wasn't just a casual mistake. Added an example for sequence-add-between.
This commit is contained in:
parent
995af02c11
commit
47a33f2edf
|
@ -364,6 +364,8 @@ source for all syntax errors.
|
||||||
(values (+ n (* d k)) (* k 10)))])
|
(values (+ n (* d k)) (* k 10)))])
|
||||||
n))]))
|
n))]))
|
||||||
|
|
||||||
|
@code:comment{If we misuse for/digits, we can get good error reporting}
|
||||||
|
@code:comment{because the use of orig-datum allows for source correlation:}
|
||||||
(for/digits
|
(for/digits
|
||||||
[a (in-list '(1 2 3))]
|
[a (in-list '(1 2 3))]
|
||||||
[b (in-list '(4 5 6))]
|
[b (in-list '(4 5 6))]
|
||||||
|
@ -373,6 +375,24 @@ source for all syntax errors.
|
||||||
([a (in-list '(1 2 3))]
|
([a (in-list '(1 2 3))]
|
||||||
[b (in-list '(2 4 6))])
|
[b (in-list '(2 4 6))])
|
||||||
(+ a b))
|
(+ a b))
|
||||||
|
|
||||||
|
|
||||||
|
@code:comment{Another example: compute the max during iteration:}
|
||||||
|
(define-syntax (for/max stx)
|
||||||
|
(syntax-case stx ()
|
||||||
|
[(_ clauses . defs+exprs)
|
||||||
|
(with-syntax ([original stx])
|
||||||
|
#'(for/fold/derived original
|
||||||
|
([current-max -inf.0])
|
||||||
|
clauses
|
||||||
|
(define maybe-new-max
|
||||||
|
(let () . defs+exprs))
|
||||||
|
(if (> maybe-new-max current-max)
|
||||||
|
maybe-new-max
|
||||||
|
current-max)))]))
|
||||||
|
(for/max ([n '(3.14159 2.71828 1.61803)]
|
||||||
|
[s '(-1 1 1)])
|
||||||
|
(* n s))
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ vice-versa.
|
||||||
|
|
||||||
@(define sequence-evaluator
|
@(define sequence-evaluator
|
||||||
(let ([evaluator (make-base-eval)])
|
(let ([evaluator (make-base-eval)])
|
||||||
(evaluator '(require racket/generic racket/list racket/stream))
|
(evaluator '(require racket/generic racket/list racket/stream racket/sequence))
|
||||||
evaluator))
|
evaluator))
|
||||||
|
|
||||||
@guideintro["sequences"]{sequences}
|
@guideintro["sequences"]{sequences}
|
||||||
|
@ -699,6 +699,17 @@ each element in the sequence.
|
||||||
|
|
||||||
If @racket[s] is a @tech{stream}, then the result is also a
|
If @racket[s] is a @tech{stream}, then the result is also a
|
||||||
@tech{stream}.
|
@tech{stream}.
|
||||||
|
|
||||||
|
@examples[#:eval sequence-evaluator
|
||||||
|
(let* ([all-reds (in-cycle '("red"))]
|
||||||
|
[red-and-blues (sequence-add-between all-reds "blue")])
|
||||||
|
(for/list ([n (in-range 10)]
|
||||||
|
[elt red-and-blues])
|
||||||
|
elt))
|
||||||
|
|
||||||
|
(for ([text (sequence-add-between '("veni" "vidi" "duci") ", ")])
|
||||||
|
(display text))
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@; ======================================================================
|
@; ======================================================================
|
||||||
|
|
Loading…
Reference in New Issue
Block a user