From 4c91867b46160b93512dd356ed662a56e40a8020 Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Thu, 20 Aug 2015 20:02:57 -0400 Subject: [PATCH 1/3] fix vector-mapper-lens example --- lens/util/immutable.rkt | 5 +++++ unstable/lens/mapper.scrbl | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lens/util/immutable.rkt b/lens/util/immutable.rkt index 9f82d91..781444f 100644 --- a/lens/util/immutable.rkt +++ b/lens/util/immutable.rkt @@ -2,6 +2,8 @@ (provide (all-defined-out)) +(require racket/vector) + ;; The immutable? predicate only works for strings, byte-strings, vectors, hash-tables, and boxes. (define (immutable-string? v) @@ -31,3 +33,6 @@ (define (build-immutable-vector n f) (vector->immutable-vector (build-vector n f))) +(define (immutable-vector-map f v) + (vector->immutable-vector (vector-map f v))) + diff --git a/unstable/lens/mapper.scrbl b/unstable/lens/mapper.scrbl index e6e7933..7e0a2ba 100644 --- a/unstable/lens/mapper.scrbl +++ b/unstable/lens/mapper.scrbl @@ -19,5 +19,6 @@ Creates a lens that maps @racket[lens] over a target vector with @racket[vector- @lenses-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-map symbol->string xs))) + (lens-transform (vector-mapper-lens first-lens) '#((a b) (c d) (e f)) + (λ (xs) (vector->immutable-vector (vector-map symbol->string xs)))) ]} From f7cb175ee873691700c1571cc801ba3b9356df0c Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Thu, 20 Aug 2015 20:11:07 -0400 Subject: [PATCH 2/3] lens/c contract names --- lens/base/contract.rkt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lens/base/contract.rkt b/lens/base/contract.rkt index 52c38ac..aae3889 100644 --- a/lens/base/contract.rkt +++ b/lens/base/contract.rkt @@ -3,6 +3,7 @@ (provide lens/c) (require racket/contract/base + unstable/contract "gen-lens.rkt" ) (module+ test @@ -13,10 +14,12 @@ )) (define (lens/c target/c view/c) - (gen-lens/c - [lens-view (or/c #f [lens? target/c . -> . view/c])] - [lens-set (or/c #f [lens? target/c view/c . -> . target/c])] - [focus-lens (or/c #f [lens? target/c . -> . (values view/c [view/c . -> . target/c])])])) + (rename-contract + (gen-lens/c + [lens-view (or/c #f [lens? target/c . -> . view/c])] + [lens-set (or/c #f [lens? target/c view/c . -> . target/c])] + [focus-lens (or/c #f [lens? target/c . -> . (values view/c [view/c . -> . target/c])])]) + `(lens/c ,(contract-name target/c) ,(contract-name view/c)))) (module+ test (check-exn exn:fail:contract? From 36b3260de444361ec09d37205bf83ffa8f73217e Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Thu, 20 Aug 2015 20:17:24 -0400 Subject: [PATCH 3/3] fix test --- unstable/lens/mapper.rkt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/unstable/lens/mapper.rkt b/unstable/lens/mapper.rkt index c74cb58..12ade24 100644 --- a/unstable/lens/mapper.rkt +++ b/unstable/lens/mapper.rkt @@ -49,6 +49,7 @@ '#(a c e)) (check-equal? (lens-set (vector-mapper-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)) (vector-map symbol->string _)) + (check-equal? (lens-transform (vector-mapper-lens first-lens) '#((a b) (c d) (e f)) + (immutable-vector-map symbol->string _)) '#(("a" b) ("c" d) ("e" f))) )