This commit is contained in:
Ed Langley
2019-03-07 23:20:23 -08:00
parent 14b91cf5fe
commit f909394cab

View File

@ -1,29 +1,11 @@
(defpackage :data-lens (defpackage :data-lens
(:use :cl) (:use :cl)
(:export #:regex-match #:include #:exclude #:pick (:export #:regex-match #:include #:exclude #:pick #:key-transform
#:snapshot-to-vector #:vector-to-lt #:key-transform #:combine #:derive #:cumsum #:over #:on #:shortcut #:defun-ct #:key
#:combine #:derive #:cumsum #:over #:on #:shortcut #:extract-key #:element #:let-fn #:juxt #:transform-tail #:slice
#:defun-ct #:compress-runs #:combine-matching-lists #:sorted #:applicable-when
#:key #:of-length #:of-min-length #:of-max-length #:transform-head
#:extract-key #:maximizing #:zipping #:applying #:transform-elt #:denest))
#: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
#:transform-elt
#:denest))
(in-package :data-lens) (in-package :data-lens)
(declaim (declaim
@ -53,7 +35,7 @@
(defmacro let-fn ((&rest bindings) &body body) (defmacro let-fn ((&rest bindings) &body body)
(let ((binding-forms (mapcar (lambda (form) (let ((binding-forms (mapcar (lambda (form)
`(,(car form) ,(cadr form) `(,(car form) ,(cadr form)
(funcall ,@(cddr form) ,@(cadr form)))) (funcall ,@(cddr form) ,@(cadr form))))
bindings))) bindings)))
`(labels ,binding-forms `(labels ,binding-forms
,@body))) ,@body)))
@ -65,8 +47,8 @@
(typecase (car map) (typecase (car map)
(cons (cdr (assoc key map :test 'equal))) (cons (cdr (assoc key map :test 'equal)))
(t (loop for (a-key . value) on map by #'cddr (t (loop for (a-key . value) on map by #'cddr
when (equal key a-key) do when (equal key a-key) do
(return (car value))))))) (return (car value)))))))
(defun-ct deduplicate (&optional (test 'eql)) (defun-ct deduplicate (&optional (test 'eql))
(lambda (it) (lambda (it)