Browse code
feat: add x-group
Edward Langley authored on 22/10/2023 18:16:36
Showing 2 changed files
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) |