mirror of
https://github.com/fiddlerwoaroof/data-lens.git
synced 2025-11-08 18:26:32 +00:00
feat: generalize transform-elt to sequences
This commit is contained in:
@ -225,9 +225,10 @@
|
|||||||
|
|
||||||
(defun transform-elt (elt fun)
|
(defun transform-elt (elt fun)
|
||||||
(lambda (it)
|
(lambda (it)
|
||||||
(append (subseq it 0 elt)
|
(concatenate (type-of it)
|
||||||
(list (funcall fun (nth elt it)))
|
(subseq it 0 elt)
|
||||||
(subseq it (1+ elt)))))
|
(list (funcall fun (elt it elt)))
|
||||||
|
(subseq it (1+ elt)))))
|
||||||
|
|
||||||
(defun key-transform (fun key-get key-set)
|
(defun key-transform (fun key-get key-set)
|
||||||
(lambda (it)
|
(lambda (it)
|
||||||
|
|||||||
15
t/lens.lisp
15
t/lens.lisp
@ -259,3 +259,18 @@
|
|||||||
(5am:is (equalp #(1 2 3)
|
(5am:is (equalp #(1 2 3)
|
||||||
(funcall (data-lens:over '1+ :result-type 'vector)
|
(funcall (data-lens:over '1+ :result-type 'vector)
|
||||||
#(0 1 2)))))
|
#(0 1 2)))))
|
||||||
|
|
||||||
|
(5am:def-test transform-elt (:suite :data-lens.lens :depends-on (and functionalize))
|
||||||
|
(5am:is (equal '(1 1 2)
|
||||||
|
(funcall (data-lens:transform-elt 0 '1+)
|
||||||
|
'(0 1 2))))
|
||||||
|
(5am:is (equal '(0 2 2)
|
||||||
|
(funcall (data-lens:transform-elt 1 '1+)
|
||||||
|
'(0 1 2))))
|
||||||
|
(5am:is (equalp #(0 1 3)
|
||||||
|
(funcall (data-lens:transform-elt 2 '1+)
|
||||||
|
(vector 0 1 2))))
|
||||||
|
(5am:is (equal "Abc"
|
||||||
|
(funcall (data-lens:transform-elt 0 'char-upcase)
|
||||||
|
"abc")))
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user