diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-04-01 20:59:45 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-04-01 20:59:45 +0200 |
commit | 1a9518ec04503b82830445eccafd71aadb8c0dbd (patch) | |
tree | e78b30c2a5ce524cebe168797e92d10e3d640809 /module/util | |
parent | Extend for syntax to support multiple variables. (diff) | |
download | calp-1a9518ec04503b82830445eccafd71aadb8c0dbd.tar.gz calp-1a9518ec04503b82830445eccafd71aadb8c0dbd.tar.xz |
Add group-by.
Diffstat (limited to '')
-rw-r--r-- | module/util.scm | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/module/util.scm b/module/util.scm index 8ccfa27e..d4c318a3 100644 --- a/module/util.scm +++ b/module/util.scm @@ -398,6 +398,12 @@ (assq-set! alist k (append v (or o '()))))) (copy-tree a) b)) +(define-public (group-by proc lst) + (let ((h (make-hash-table))) + (for value in lst + (let ((key (proc value))) + (hash-set! h key (cons value (hash-ref h key '()))))) + (hash-map->list list h))) (define-macro (use-modules* . forms) `(use-modules |