diff --git a/lens.lisp b/lens.lisp index 0ebc4fd..b074ec9 100644 --- a/lens.lisp +++ b/lens.lisp @@ -291,6 +291,11 @@ (apply #'concatenate result-type seq))) +(defmacro calling (fun &rest args) + (alexandria:with-gensyms (first-arg) + `(lambda (,first-arg) + (funcall (functionalize ,fun) ,first-arg ,@args)))) + (defmacro applying (fun &rest args) (alexandria:with-gensyms (seq fsym) `(let ((,fsym (functionalize ,fun))) diff --git a/package.lisp b/package.lisp index 0b13632..429bc53 100644 --- a/package.lisp +++ b/package.lisp @@ -16,11 +16,11 @@ #:defun-ct #:key #:extract-key #:element #:let-fn #:juxt #:transform-tail #:slice #:compress-runs #:combine-matching-lists #:sorted #:applicable-when - #:of-length #:of-min-length #:of-max-length - #:transform-head #:maximizing #:zipping #:applying - #:splice-elt #:transform-elt #:denest #:op #:defalias #:<> - #:<>1 #:== #:• #:suffixp #:functionalize #:inc #:group-by - #:keys #:conj #:disj #:delay)) + #:of-length #:of-min-length #:of-max-length #:transform-head + #:maximizing #:zipping #:applying #:splice-elt + #:transform-elt #:denest #:op #:defalias #:<> #:<>1 #:== #:• + #:∘ #:suffixp #:functionalize #:inc #:group-by #:keys + #:conj #:disj #:delay #:calling)) (defpackage :data-lens.transducers.internals (:use :cl)