mirror of
https://github.com/fiddlerwoaroof/data-lens.git
synced 2025-11-08 10:16:32 +00:00
feat: add transform
This commit is contained in:
@ -332,6 +332,13 @@
|
||||
(apply #'concatenate result-type
|
||||
seq)))
|
||||
|
||||
(defun transform (arg &rest args)
|
||||
(if args
|
||||
(lambda (fn)
|
||||
(apply fn arg args))
|
||||
(lambda (fn)
|
||||
(funcall fn arg))))
|
||||
|
||||
(defmacro calling (fun &rest args)
|
||||
(alexandria:with-gensyms (first-arg)
|
||||
`(lambda (,first-arg)
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
#:maximizing #:zipping #:applying #:splice-elt
|
||||
#:transform-elt #:denest #:op #:defalias #:<> #:<>1 #:== #:•
|
||||
#:∘ #:suffixp #:functionalize #:inc #:group-by #:keys
|
||||
#:conj #:disj #:delay #:calling))
|
||||
#:conj #:disj #:delay #:transform))
|
||||
|
||||
(defpackage :data-lens.transducers.internals
|
||||
(:use :cl)
|
||||
|
||||
11
t/lens.lisp
11
t/lens.lisp
@ -275,5 +275,12 @@
|
||||
(vector 0 1 2))))
|
||||
(5am:is (equal "Abc"
|
||||
(funcall (data-lens:transform-elt 0 'char-upcase)
|
||||
"abc")))
|
||||
)
|
||||
"abc"))))
|
||||
|
||||
(5am:def-test transform (:suite :data-lens.lens :depends-on (and functionalize))
|
||||
(5am:is (equal (funcall (data-lens:transform 1) #'1+)
|
||||
2))
|
||||
|
||||
(5am:is (equal (funcall (data-lens:transform 1)
|
||||
(data-lens:juxt '1- 'identity '1+))
|
||||
'(0 1 2))))
|
||||
|
||||
Reference in New Issue
Block a user