git.fiddlerwoaroof.com
Browse code

feat: add x-group

Edward Langley authored on 22/10/2023 18:16:36
Showing 2 changed files
... ...
@@ -423,6 +423,11 @@
423 423
                       (reverse (cdr it))))
424 424
               (alexandria:hash-table-alist groups)))))
425 425
 
426
+(defun x-group (fn)
427
+  (lambda (groups)
428
+    (loop for (key . group) in groups
429
+          collect (funcall fn key group))))
430
+
426 431
 (defun hash-join (probe join-fn &key (test 'eql) (key 'car))
427 432
   (let* ((lookup (make-hash-table :test test :size (length probe)))
428 433
          (lookup-fn (functionalize lookup)))
... ...
@@ -21,9 +21,7 @@
21 21
            #:transform-elt #:denest #:op #:defalias #:<> #:<>1 #:== #:•
22 22
            #:∘ #:suffixp #:functionalize #:inc #:group-by #:keys
23 23
            #:conj #:disj #:delay #:of-type #:transform #:calling*
24
-           #:calling
25
-           #:hash-join
26
-           #:tap))
24
+           #:calling #:hash-join #:tap #:x-group))
27 25
 
28 26
 (defpackage :data-lens.transducers.internals
29 27
   (:use :cl)