rename mapper-lens to map-lens
This commit is contained in:
parent
69dcc57a21
commit
b3f68d6764
|
@ -45,7 +45,7 @@ Lenses can also be joined together to form compound lenses that view many things
|
||||||
Lenses can also be extended to operate on some new data structure:
|
Lenses can also be extended to operate on some new data structure:
|
||||||
|
|
||||||
```racket
|
```racket
|
||||||
> (define first-of-each-lens (mapper-lens first-lens))
|
> (define first-of-each-lens (map-lens first-lens))
|
||||||
> (lens-view first-of-each-lens '((1 2) (3 4) (5 6)))
|
> (lens-view first-of-each-lens '((1 2) (3 4) (5 6)))
|
||||||
'(1 3 5)
|
'(1 3 5)
|
||||||
> (lens-set first-of-each-lens '((1 2) (3 4) (5 6)) '(a b c))
|
> (lens-set first-of-each-lens '((1 2) (3 4) (5 6)) '(a b c))
|
||||||
|
|
|
@ -5,7 +5,7 @@ provide lazy-lens
|
||||||
|
|
||||||
require fancy-app lens/private/base/main racket/promise
|
require fancy-app lens/private/base/main racket/promise
|
||||||
module+ test
|
module+ test
|
||||||
require rackunit "if.rkt" "isomorphism/data.rkt" "mapper.rkt"
|
require rackunit "if.rkt" "isomorphism/data.rkt" "map.rkt"
|
||||||
|
|
||||||
(define-syntax-rule (lazy-lens expr)
|
(define-syntax-rule (lazy-lens expr)
|
||||||
(let ([p (delay expr)])
|
(let ([p (delay expr)])
|
||||||
|
@ -16,13 +16,13 @@ module+ test
|
||||||
name))
|
name))
|
||||||
|
|
||||||
module+ test
|
module+ test
|
||||||
(define (tree-mapper-lens item-lens)
|
(define (tree-map-lens item-lens)
|
||||||
(rec-lens the-tree-lens
|
(rec-lens the-tree-lens
|
||||||
(lens-cond [list? (mapper-lens the-tree-lens)]
|
(lens-cond [list? (map-lens the-tree-lens)]
|
||||||
[else item-lens])))
|
[else item-lens])))
|
||||||
(check-equal? (lens-view (tree-mapper-lens symbol->string-lens) '(a (b (() c)) (d)))
|
(check-equal? (lens-view (tree-map-lens symbol->string-lens) '(a (b (() c)) (d)))
|
||||||
'("a" ("b" (() "c")) ("d")))
|
'("a" ("b" (() "c")) ("d")))
|
||||||
(check-equal? (lens-set (tree-mapper-lens symbol->string-lens)
|
(check-equal? (lens-set (tree-map-lens symbol->string-lens)
|
||||||
'(a (b (() c)) (d))
|
'(a (b (() c)) (d))
|
||||||
'("hay" ("bee" (() "sea")) ("deep")))
|
'("hay" ("bee" (() "sea")) ("deep")))
|
||||||
'(hay (bee (() sea)) (deep)))
|
'(hay (bee (() sea)) (deep)))
|
||||||
|
|
|
@ -21,13 +21,13 @@ and set the target.
|
||||||
Creates a potentially recursive lens, where @racket[lens-expr] can refer to
|
Creates a potentially recursive lens, where @racket[lens-expr] can refer to
|
||||||
@racket[rec-id] as a lazy version of itself.
|
@racket[rec-id] as a lazy version of itself.
|
||||||
@lens-unstable-examples[
|
@lens-unstable-examples[
|
||||||
(define (tree-mapper-lens item-lens)
|
(define (tree-map-lens item-lens)
|
||||||
(rec-lens the-tree-lens
|
(rec-lens the-tree-lens
|
||||||
(lens-cond [list? (mapper-lens the-tree-lens)]
|
(lens-cond [list? (map-lens the-tree-lens)]
|
||||||
[else item-lens])))
|
[else item-lens])))
|
||||||
(lens-view (tree-mapper-lens symbol->string-lens) '(a (b (() c)) (d)))
|
(lens-view (tree-map-lens symbol->string-lens) '(a (b (() c)) (d)))
|
||||||
(lens-set (tree-mapper-lens symbol->string-lens)
|
(lens-set (tree-map-lens symbol->string-lens)
|
||||||
'(a (b (() c)) (d))
|
'(a (b (() c)) (d))
|
||||||
'("hay" ("bee" (() "sea")) ("deep")))
|
'("hay" ("bee" (() "sea")) ("deep")))
|
||||||
]}
|
]}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"isomorphism.rkt"
|
"isomorphism.rkt"
|
||||||
"join-assoc.rkt"
|
"join-assoc.rkt"
|
||||||
"lazy.rkt"
|
"lazy.rkt"
|
||||||
"mapper.rkt"
|
"map.rkt"
|
||||||
"match.rkt"
|
"match.rkt"
|
||||||
"set-filterer.rkt"
|
"set-filterer.rkt"
|
||||||
"set-member.rkt"
|
"set-member.rkt"
|
||||||
|
|
|
@ -19,7 +19,7 @@ this library being backwards-compatible.
|
||||||
"isomorphism.scrbl"
|
"isomorphism.scrbl"
|
||||||
"join-assoc.scrbl"
|
"join-assoc.scrbl"
|
||||||
"lazy.scrbl"
|
"lazy.scrbl"
|
||||||
"mapper.scrbl"
|
"map.scrbl"
|
||||||
"match.scrbl"
|
"match.scrbl"
|
||||||
"set-filterer.scrbl"
|
"set-filterer.scrbl"
|
||||||
"set-member.scrbl"
|
"set-member.scrbl"
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
(require racket/contract/base)
|
(require racket/contract/base)
|
||||||
(provide (contract-out
|
(provide (contract-out
|
||||||
[mapper-lens
|
[map-lens
|
||||||
(-> lens? (lens/c list? list?))]
|
(-> lens? (lens/c list? list?))]
|
||||||
[vector-mapper-lens
|
[vector-map-lens
|
||||||
(-> lens? (lens/c immutable-vector? immutable-vector?))]
|
(-> lens? (lens/c immutable-vector? immutable-vector?))]
|
||||||
))
|
))
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
(module+ test
|
(module+ test
|
||||||
(require rackunit lens/private/list/main))
|
(require rackunit lens/private/list/main))
|
||||||
|
|
||||||
(define (mapper-lens lens)
|
(define (map-lens lens)
|
||||||
(make-lens
|
(make-lens
|
||||||
(lens-view/map lens _)
|
(lens-view/map lens _)
|
||||||
(lens-set/map lens _ _)))
|
(lens-set/map lens _ _)))
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
(define (lens-set/map lens tgts new-views)
|
(define (lens-set/map lens tgts new-views)
|
||||||
(map (lens-set lens _ _) tgts new-views))
|
(map (lens-set lens _ _) tgts new-views))
|
||||||
|
|
||||||
(define (vector-mapper-lens lens)
|
(define (vector-map-lens lens)
|
||||||
(make-lens
|
(make-lens
|
||||||
(lens-view/vector-map lens _)
|
(lens-view/vector-map lens _)
|
||||||
(lens-set/vector-map lens _ _)))
|
(lens-set/vector-map lens _ _)))
|
||||||
|
@ -39,17 +39,17 @@
|
||||||
(vector->immutable-vector (vector-map (lens-set lens _ _) tgt new-view)))
|
(vector->immutable-vector (vector-map (lens-set lens _ _) tgt new-view)))
|
||||||
|
|
||||||
(module+ test
|
(module+ test
|
||||||
(check-equal? (lens-view (mapper-lens first-lens) '((a b) (c d) (e f)))
|
(check-equal? (lens-view (map-lens first-lens) '((a b) (c d) (e f)))
|
||||||
'(a c e))
|
'(a c e))
|
||||||
(check-equal? (lens-set (mapper-lens first-lens) '((a b) (c d) (e f)) '(1 2 3))
|
(check-equal? (lens-set (map-lens first-lens) '((a b) (c d) (e f)) '(1 2 3))
|
||||||
'((1 b) (2 d) (3 f)))
|
'((1 b) (2 d) (3 f)))
|
||||||
(check-equal? (lens-transform (mapper-lens first-lens) '((a b) (c d) (e f)) (map symbol->string _))
|
(check-equal? (lens-transform (map-lens first-lens) '((a b) (c d) (e f)) (map symbol->string _))
|
||||||
'(("a" b) ("c" d) ("e" f)))
|
'(("a" b) ("c" d) ("e" f)))
|
||||||
(check-equal? (lens-view (vector-mapper-lens first-lens) '#((a b) (c d) (e f)))
|
(check-equal? (lens-view (vector-map-lens first-lens) '#((a b) (c d) (e f)))
|
||||||
'#(a c e))
|
'#(a c e))
|
||||||
(check-equal? (lens-set (vector-mapper-lens first-lens) '#((a b) (c d) (e f)) '#(1 2 3))
|
(check-equal? (lens-set (vector-map-lens first-lens) '#((a b) (c d) (e f)) '#(1 2 3))
|
||||||
'#((1 b) (2 d) (3 f)))
|
'#((1 b) (2 d) (3 f)))
|
||||||
(check-equal? (lens-transform (vector-mapper-lens first-lens) '#((a b) (c d) (e f))
|
(check-equal? (lens-transform (vector-map-lens first-lens) '#((a b) (c d) (e f))
|
||||||
(immutable-vector-map symbol->string _))
|
(immutable-vector-map symbol->string _))
|
||||||
'#(("a" b) ("c" d) ("e" f)))
|
'#(("a" b) ("c" d) ("e" f)))
|
||||||
)
|
)
|
24
unstable/lens/map.scrbl
Normal file
24
unstable/lens/map.scrbl
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#lang scribble/manual
|
||||||
|
|
||||||
|
@(require lens/private/doc-util/main)
|
||||||
|
|
||||||
|
@title{Lenses that map over lists and vectors}
|
||||||
|
|
||||||
|
@defmodule[unstable/lens/map]
|
||||||
|
|
||||||
|
@defproc[(map-lens [lens lens?]) lens?]{
|
||||||
|
Creates a lens that maps @racket[lens] over a target list.
|
||||||
|
@lens-unstable-examples[
|
||||||
|
(lens-view (map-lens first-lens) '((a b) (c d) (e f)))
|
||||||
|
(lens-set (map-lens first-lens) '((a b) (c d) (e f)) '(1 2 3))
|
||||||
|
(lens-transform (map-lens first-lens) '((a b) (c d) (e f)) (λ (xs) (map symbol->string xs)))
|
||||||
|
]}
|
||||||
|
|
||||||
|
@defproc[(vector-map-lens [lens lens?]) lens?]{
|
||||||
|
Creates a lens that maps @racket[lens] over a target vector with @racket[vector-map].
|
||||||
|
@lens-unstable-examples[
|
||||||
|
(lens-view (vector-map-lens first-lens) '#((a b) (c d) (e f)))
|
||||||
|
(lens-set (vector-map-lens first-lens) '#((a b) (c d) (e f)) '#(1 2 3))
|
||||||
|
(lens-transform (vector-map-lens first-lens) '#((a b) (c d) (e f))
|
||||||
|
(λ (xs) (vector->immutable-vector (vector-map symbol->string xs))))
|
||||||
|
]}
|
|
@ -1,24 +0,0 @@
|
||||||
#lang scribble/manual
|
|
||||||
|
|
||||||
@(require lens/private/doc-util/main)
|
|
||||||
|
|
||||||
@title{Lenses that map over lists and vectors}
|
|
||||||
|
|
||||||
@defmodule[unstable/lens/mapper]
|
|
||||||
|
|
||||||
@defproc[(mapper-lens [lens lens?]) lens?]{
|
|
||||||
Creates a lens that maps @racket[lens] over a target list.
|
|
||||||
@lens-unstable-examples[
|
|
||||||
(lens-view (mapper-lens first-lens) '((a b) (c d) (e f)))
|
|
||||||
(lens-set (mapper-lens first-lens) '((a b) (c d) (e f)) '(1 2 3))
|
|
||||||
(lens-transform (mapper-lens first-lens) '((a b) (c d) (e f)) (λ (xs) (map symbol->string xs)))
|
|
||||||
]}
|
|
||||||
|
|
||||||
@defproc[(vector-mapper-lens [lens lens?]) lens?]{
|
|
||||||
Creates a lens that maps @racket[lens] over a target vector with @racket[vector-map].
|
|
||||||
@lens-unstable-examples[
|
|
||||||
(lens-view (vector-mapper-lens first-lens) '#((a b) (c d) (e f)))
|
|
||||||
(lens-set (vector-mapper-lens first-lens) '#((a b) (c d) (e f)) '#(1 2 3))
|
|
||||||
(lens-transform (vector-mapper-lens first-lens) '#((a b) (c d) (e f))
|
|
||||||
(λ (xs) (vector->immutable-vector (vector-map symbol->string xs))))
|
|
||||||
]}
|
|
|
@ -17,7 +17,7 @@ module+ test
|
||||||
require lens/private/list/main
|
require lens/private/list/main
|
||||||
rackunit
|
rackunit
|
||||||
"isomorphism/data.rkt"
|
"isomorphism/data.rkt"
|
||||||
"mapper.rkt"
|
"map.rkt"
|
||||||
|
|
||||||
;; lens-zoom : (Lens (Outer Inner) Inner) (Lens A B) -> (Lens (Outer A) (Outer B))
|
;; lens-zoom : (Lens (Outer Inner) Inner) (Lens A B) -> (Lens (Outer A) (Outer B))
|
||||||
(define (lens-zoom zoom-lens transformer-lens)
|
(define (lens-zoom zoom-lens transformer-lens)
|
||||||
|
@ -77,7 +77,7 @@ module+ test
|
||||||
(lens-set trans-second-first/third-second '(1 (2 3) (4 5)) '(a b c)))
|
(lens-set trans-second-first/third-second '(1 (2 3) (4 5)) '(a b c)))
|
||||||
'(a b c))
|
'(a b c))
|
||||||
(define (rekey-alist-lens key->new-key-lens)
|
(define (rekey-alist-lens key->new-key-lens)
|
||||||
(mapper-lens (lens-zoom car-lens key->new-key-lens)))
|
(map-lens (lens-zoom car-lens key->new-key-lens)))
|
||||||
(check-equal? (lens-view (rekey-alist-lens symbol->string-lens) '((a . 1) (b . 2) (c . 3)))
|
(check-equal? (lens-view (rekey-alist-lens symbol->string-lens) '((a . 1) (b . 2) (c . 3)))
|
||||||
'(("a" . 1) ("b" . 2) ("c" . 3)))
|
'(("a" . 1) ("b" . 2) ("c" . 3)))
|
||||||
(check-equal? (lens-set (rekey-alist-lens symbol->string-lens)
|
(check-equal? (lens-set (rekey-alist-lens symbol->string-lens)
|
||||||
|
@ -89,7 +89,7 @@ module+ test
|
||||||
'(("one" . 10) ("two" . 200) ("three" . 3000)))
|
'(("one" . 10) ("two" . 200) ("three" . 3000)))
|
||||||
'((one . 10) (two . 200) (three . 3000)))
|
'((one . 10) (two . 200) (three . 3000)))
|
||||||
(define (rek+v-alist-lens key->new-key-lens value->new-value-lens)
|
(define (rek+v-alist-lens key->new-key-lens value->new-value-lens)
|
||||||
(mapper-lens (lens-zoom* car-lens key->new-key-lens cdr-lens value->new-value-lens)))
|
(map-lens (lens-zoom* car-lens key->new-key-lens cdr-lens value->new-value-lens)))
|
||||||
(check-equal? (lens-view (rek+v-alist-lens symbol->string-lens number->string-lens)
|
(check-equal? (lens-view (rek+v-alist-lens symbol->string-lens number->string-lens)
|
||||||
'((a . 1) (b . 2) (c . 3)))
|
'((a . 1) (b . 2) (c . 3)))
|
||||||
'(("a" . "1") ("b" . "2") ("c" . "3")))
|
'(("a" . "1") ("b" . "2") ("c" . "3")))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user