Unstable Lenses
(require unstable/lens) | package: lens |
This library provides additional features for the lens library that are non-final and may change in future releases. Do not depend on this library being backwards-compatible.
1 lens-view/thrush, lens-set/thrush, and lens-transform/thrush
(require unstable/lens/arrow) | package: lens |
procedure
(lens-view/thrush target lens ...) → any/c
target : any/c lens : lens?
procedure
(lens-view~> target lens ...) → any/c
target : any/c lens : lens?
Examples: | ||||
|
procedure
(lens-set/thrush target lens ... #:-> new-view) → any/c target : any/c lens : lens? new-view : any/c
procedure
(lens-set~> target lens ... #:-> new-view) → any/c
target : any/c lens : lens? new-view : any/c
Examples: | ||||
|
procedure
(lens-transform/thrush target lens ... #:-> transformer) → any/c target : any/c lens : lens? transformer : (-> any/c any/c)
procedure
(lens-transform~> target lens ... #:-> transformer) → any/c target : any/c lens : lens? transformer : (-> any/c any/c)
Examples: | ||||
|
2 Lenses for nested dictionaries
(require unstable/lens/dict-nested) | package: lens |
procedure
(dict-ref-nested-lens k ...) → (lens/c functional-dict? any/c)
k : any/c
Examples: | |||||||
|
3 Filtering hash-tables
(require unstable/lens/hash-filterer) | package: lens |
procedure
(hash-filterer-lens/key keep?)
→ (lens/c immutable-hash? immutable?) keep? : (-> any/c boolean?)
Examples: | ||||
|
procedure
(hash-filterer-lens/value keep?)
→ (lens/c immutable-hash? immutable?) keep? : (-> any/c boolean?)
Examples: | ||||
|
procedure
(hash-filterer-lens keep?)
→ (lens/c immutable-hash? immutable?) keep? : (-> any/c any/c boolean?)
Examples: | ||||
|
4 Conditional Lenses
(require unstable/lens/if) | package: lens |
procedure
pred : (-> target/c any/c) lens1 : (lens/c target/c view/c) lens2 : (lens/c target/c view/c)
Examples: | |||||||||||
|
syntax
(lens-cond [pred-expr lens-expr] ...)
Examples: | ||||||||||||||||||
|
syntax
(lens-match [pat lens-expr] ...)
Examples: | |||||||||||||
|
5 Isomorphisms
(require unstable/lens/isomorphism) | package: lens |
procedure
(make-isomorphism-lens f inv) → lens?
f : (a/c . -> . b/c) inv : (b/c . -> . a/c)
Examples: | ||||
|
procedure
(isomorphism-lens? v) → boolean?
v : any/c
procedure
(isomorphism-lens-inverse iso-lens) → isomorphism-lens?
iso-lens : isomorphism-lens?
procedure
(make-isomorphism-lenses f inv)
→
isomorphism-lens? isomorphism-lens? f : (a/c . -> . b/c) inv : (b/c . -> . a/c)
(define-values [string->symbol-lens symbol->string-lens] (make-isomorphism-lenses string->symbol symbol->string))
procedure
(isomorphism-compose lens ...) → isomorphism-lens?
lens : isomorphism-lens?
procedure
(isomorphism-thrush lens ...) → isomorphism-lens?
lens : isomorphism-lens?
value
value
value
value
value
value
value
value
6 Joining lenses with an association list
(require unstable/lens/join-assoc) | package: lens |
procedure
(lens-join/assoc key lens ... ...)
→ (lens/c target/c (listof (cons/c key/c value/c))) key : key/c lens : (lens/c target/c value/c)
Examples: | |||||||||
|
7 Lazy lenses and recursive lenses
(require unstable/lens/lazy) | package: lens |
syntax
(lazy-lens lens-expr)
Examples: | ||||||||||||
|
syntax
(rec-lens rec-id lens-expr)
Examples: | ||||||||||||||
|
8 Lenses that map over lists and vectors
(require unstable/lens/map) | package: lens |
Examples: | ||||||
|
procedure
(vector-map-lens lens) → lens?
lens : lens?
Examples: | ||||||||
|
9 Lenses based on match patterns
syntax
(match-lens id pattern replacement)
Examples: | ||||||||||||||||||
|
10 Filtering sets
(require unstable/lens/set-filterer) | package: lens |
procedure
(set-filterer-lens pred)
→ (lens/c functional-set? functional-set?) pred : (-> any/c any/c)
Examples: | ||||
|
Examples: | ||||||||||
|
11 Lenses for membership of a set
(require unstable/lens/set-member) | package: lens |
procedure
(set-member-lens v) → (lens/c functional-set? boolean?)
v : any/c
Examples: | |||||||||||||||
|
12 Splitting Strings
(require unstable/lens/string-split) | package: lens |
Examples: | ||||
|
Examples: | ||||||||
|
13 Joining lenses with structs
(require unstable/lens/struct-join) | package: lens |
syntax
(lens-join/struct struct-id field-lens ...)
field-lens = lens-expr | field-keyword lens-expr
Examples: | ||||||||||
|
Examples: | |||||||||||
|
14 Nested struct lenses
(require unstable/lens/struct-nested) | package: lens |
syntax
(struct-nested-lens [struct-id field-id] ...)
Examples: | |||||||||||||||||
|
Examples: | |||||||||||
|
syntax
(struct-nested-lens* struct-id both-id ... field-id)
Examples: | |||||||||||||||||
|
Examples: | |||||||||
|
15 Struct-lens provide forms
(require unstable/lens/struct-provide) | package: lens |
syntax
(struct-lenses-out struct-id)
syntax
(struct+lenses-out struct-id)
16 Sublist lenses
(require unstable/lens/sublist) | package: lens |
procedure
(sublist-lens i j) → lens?
i : exact-nonnegative-integer? j : exact-nonnegative-integer?
Examples: | ||||
|
17 Syntax Lenses
(require unstable/lens/syntax) | package: lens |
syntax
(syntax-lens target-id structure)
Examples: | |||||||||||||||
|
procedure
(syntax-keyword-seq-lens kw) → lens?
kw : keyword?
Examples: | |||||||
|
Examples: | |||||||||||
|
18 More Viewing and Setting
procedure
(lens-set-all target new-view lens ...) → any/c
target : any/c new-view : any/c lens : lens?
Example: | ||||||
|
19 Lenses that transform subpieces
(require unstable/lens/zoom) | package: lens |
(lens-transform zoom-lens target (λ (v) (lens-view transform-lens v)))
Examples: | |||||||||||||||
|
procedure
(lens-zoom* zoom-lens transform-lens ... ...) → lens?
zoom-lens : lens? transform-lens : lens?
Examples: | |||||||||||||||||
|