6.2.901.900
3 Pair and List Lenses
3.1 Pair lenses
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
value
Lenses for accessing nested pairs. Each lens’s view is the
equivalently named pair-accessor function.
Examples: | ||||||
|
3.2 List lenses
procedure
(list-ref-lens n) → lens?
n : exact-nonnegative-integer?
Returns a lens for viewing the nth item of a list,
with indexing starting from zero.
Examples: | ||||
|
value
value
value
value
value
value
value
value
value
value
Lenses for examiniming specific items of lists. Shorthands
for the common use cases of list-ref-lens.
Examples: | ||||||
|
procedure
(list-ref-nested-lens index ...) → lens?
index : exact-nonnegative-integer? Constructs a lens that views into a tree made from nested lists. Indexing starts from zero in the same was as list-ref-lens.
Examples:
> (define first-of-second-lens (list-ref-nested-lens 1 0))
> (lens-view first-of-second-lens '(1 (a b c) 2 3)) 'a
> (lens-set first-of-second-lens '(1 (a b c) 2 3) 'foo) '(1 (foo b c) 2 3)
procedure
(list-refs-lens index ...) → lens?
index : exact-nonnegative-integer? Constructs a lens that views each index item in a list. Indexing starts from zero in the same was as list-ref-lens.
Examples:
> (define 1-5-6-lens (list-refs-lens 1 5 6))
> (lens-view 1-5-6-lens '(a b c d e f g)) '(b f g)
> (lens-set 1-5-6-lens '(a b c d e f g) '(1 2 3)) '(a 1 c d e 2 3)
3.3 Association List Lenses
procedure
(assoc-lens key [#:is-equal? key-equal?]) → lens?
key : any/c key-equal? : (-> any/c any/c any/c) = equal?
Constructs a lens for examiniming association lists.
Specifically, for a given association list the returned
lens examines the second value of the first pair that
has a key that is key-equal? to key.
Examples: | ||||||||||
|
The key-equal? procedure is useful for
datatypes that have their own definition of
equality, such as strings.
Examples: | |||||
|