diff --git a/README.md b/README.md index 317f5cb..fcbc6b7 100644 --- a/README.md +++ b/README.md @@ -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: ```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))) '(1 3 5) > (lens-set first-of-each-lens '((1 2) (3 4) (5 6)) '(a b c)) diff --git a/unstable/lens/lazy.rkt b/unstable/lens/lazy.rkt index 20a8ddb..ab54ae7 100644 --- a/unstable/lens/lazy.rkt +++ b/unstable/lens/lazy.rkt @@ -5,7 +5,7 @@ provide lazy-lens require fancy-app lens/private/base/main racket/promise 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) (let ([p (delay expr)]) @@ -16,13 +16,13 @@ module+ test name)) module+ test - (define (tree-mapper-lens item-lens) + (define (tree-map-lens item-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]))) - (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"))) - (check-equal? (lens-set (tree-mapper-lens symbol->string-lens) + (check-equal? (lens-set (tree-map-lens symbol->string-lens) '(a (b (() c)) (d)) '("hay" ("bee" (() "sea")) ("deep"))) '(hay (bee (() sea)) (deep))) diff --git a/unstable/lens/lazy.scrbl b/unstable/lens/lazy.scrbl index aae0830..b41d360 100644 --- a/unstable/lens/lazy.scrbl +++ b/unstable/lens/lazy.scrbl @@ -21,13 +21,13 @@ and set the target. Creates a potentially recursive lens, where @racket[lens-expr] can refer to @racket[rec-id] as a lazy version of itself. @lens-unstable-examples[ - (define (tree-mapper-lens item-lens) + (define (tree-map-lens item-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]))) - (lens-view (tree-mapper-lens symbol->string-lens) '(a (b (() c)) (d))) - (lens-set (tree-mapper-lens symbol->string-lens) - '(a (b (() c)) (d)) - '("hay" ("bee" (() "sea")) ("deep"))) + (lens-view (tree-map-lens symbol->string-lens) '(a (b (() c)) (d))) + (lens-set (tree-map-lens symbol->string-lens) + '(a (b (() c)) (d)) + '("hay" ("bee" (() "sea")) ("deep"))) ]} diff --git a/unstable/lens/main.rkt b/unstable/lens/main.rkt index 3850189..4039d98 100644 --- a/unstable/lens/main.rkt +++ b/unstable/lens/main.rkt @@ -6,7 +6,7 @@ "isomorphism.rkt" "join-assoc.rkt" "lazy.rkt" -"mapper.rkt" +"map.rkt" "match.rkt" "set-filterer.rkt" "set-member.rkt" diff --git a/unstable/lens/main.scrbl b/unstable/lens/main.scrbl index cdf76cd..00c6ef1 100644 --- a/unstable/lens/main.scrbl +++ b/unstable/lens/main.scrbl @@ -19,7 +19,7 @@ this library being backwards-compatible. "isomorphism.scrbl" "join-assoc.scrbl" "lazy.scrbl" - "mapper.scrbl" + "map.scrbl" "match.scrbl" "set-filterer.scrbl" "set-member.scrbl" diff --git a/unstable/lens/mapper.rkt b/unstable/lens/map.rkt similarity index 66% rename from unstable/lens/mapper.rkt rename to unstable/lens/map.rkt index cebedd7..99f52bb 100644 --- a/unstable/lens/mapper.rkt +++ b/unstable/lens/map.rkt @@ -2,9 +2,9 @@ (require racket/contract/base) (provide (contract-out - [mapper-lens + [map-lens (-> lens? (lens/c list? list?))] - [vector-mapper-lens + [vector-map-lens (-> lens? (lens/c immutable-vector? immutable-vector?))] )) @@ -16,7 +16,7 @@ (module+ test (require rackunit lens/private/list/main)) -(define (mapper-lens lens) +(define (map-lens lens) (make-lens (lens-view/map lens _) (lens-set/map lens _ _))) @@ -27,7 +27,7 @@ (define (lens-set/map lens tgts new-views) (map (lens-set lens _ _) tgts new-views)) -(define (vector-mapper-lens lens) +(define (vector-map-lens lens) (make-lens (lens-view/vector-map lens _) (lens-set/vector-map lens _ _))) @@ -39,17 +39,17 @@ (vector->immutable-vector (vector-map (lens-set lens _ _) tgt new-view))) (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)) - (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))) - (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))) - (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)) - (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))) - (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 _)) '#(("a" b) ("c" d) ("e" f))) ) diff --git a/unstable/lens/map.scrbl b/unstable/lens/map.scrbl new file mode 100644 index 0000000..3f2036b --- /dev/null +++ b/unstable/lens/map.scrbl @@ -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)))) +]} diff --git a/unstable/lens/mapper.scrbl b/unstable/lens/mapper.scrbl deleted file mode 100644 index bbc0256..0000000 --- a/unstable/lens/mapper.scrbl +++ /dev/null @@ -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)))) -]} diff --git a/unstable/lens/zoom.rkt b/unstable/lens/zoom.rkt index eb21f17..e238666 100644 --- a/unstable/lens/zoom.rkt +++ b/unstable/lens/zoom.rkt @@ -17,7 +17,7 @@ module+ test require lens/private/list/main rackunit "isomorphism/data.rkt" - "mapper.rkt" + "map.rkt" ;; lens-zoom : (Lens (Outer Inner) Inner) (Lens A B) -> (Lens (Outer A) (Outer B)) (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))) '(a b c)) (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))) '(("a" . 1) ("b" . 2) ("c" . 3))) (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))) (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) '((a . 1) (b . 2) (c . 3))) '(("a" . "1") ("b" . "2") ("c" . "3")))