Rename vector pluck

This commit is contained in:
Jack Firth 2015-07-24 22:01:34 -07:00
parent cc80637f2f
commit b89baef0fb
2 changed files with 21 additions and 19 deletions

View File

@ -2,17 +2,17 @@
(provide vector-ref-lens
vector-ref-nested-lens
vector-pluck-lens
)
vector-pick-lens)
(require fancy-app
lens/base/main
"arrow.rkt"
"join.rkt"
)
"join.rkt")
(module+ test
(require rackunit))
(define (vector-ref-lens i)
(make-lens
(vector-ref _ i)
@ -26,25 +26,27 @@
x
(vector-ref v j))))))
(module+ test
(check-equal? (lens-view (vector-ref-lens 0) #(a b c)) 'a)
(check-equal? (lens-set (vector-ref-lens 2) #(a b c) "C") #(a b "C")))
(define (vector-ref-nested-lens . is)
(apply lens-thrush (map vector-ref-lens is)))
(define (vector-pluck-lens . is)
(module+ test
(check-equal? (lens-transform (vector-ref-nested-lens 2 1)
#(a #(b c) #(d e f))
symbol->string)
#(a #(b c) #(d "e" f))))
(define (vector-pick-lens . is)
(apply lens-join/vector (map vector-ref-lens is)))
(module+ test
(check-equal? (lens-view (vector-ref-lens 0) #(a b c)) 'a)
(check-equal? (lens-view (vector-ref-lens 1) #(a b c)) 'b)
(check-equal? (lens-view (vector-ref-lens 2) #(a b c)) 'c)
(check-equal? (lens-set (vector-ref-lens 0) #(a b c) "A") #("A" b c))
(check-equal? (lens-set (vector-ref-lens 1) #(a b c) "B") #(a "B" c))
(check-equal? (lens-set (vector-ref-lens 2) #(a b c) "C") #(a b "C"))
(check-equal? (lens-transform (vector-ref-nested-lens 2 1) #(a #(b c) #(d e f)) symbol->string)
#(a #(b c) #(d "e" f)))
(define 1-5-6-lens (vector-pluck-lens 1 5 6))
(define 1-5-6-lens (vector-pick-lens 1 5 6))
(check-equal? (lens-view 1-5-6-lens #(a b c d e f g))
#(b f g))
(check-equal? (lens-set 1-5-6-lens #(a b c d e f g) #(1 2 3))
#(a 1 c d e 2 3))
)
#(a 1 c d e 2 3)))

View File

@ -19,11 +19,11 @@ Equivalent to @racket[(lens-thrush (vector-ref-lens i) ...)].
(lens-set (vector-ref-nested-lens 2 1) #(a b #(s i) d) "eye")
]}
@defproc[(vector-pluck-lens [i exact-nonnegative-integer?] ...) lens?]{
@defproc[(vector-pick-lens [i exact-nonnegative-integer?] ...) lens?]{
Like @racket[list-refs-lens], but for vectors.
Equivalent to @racket[(lens-join/vector (vector-ref-lens i) ...)].
@lenses-unstable-examples[
(define 1-5-6-lens (vector-pluck-lens 1 5 6))
(define 1-5-6-lens (vector-pick-lens 1 5 6))
(lens-view 1-5-6-lens #(a b c d e f g))
(lens-set 1-5-6-lens #(a b c d e f g) #(1 2 3))
]}