aboutsummaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-04-01 20:59:45 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-04-01 20:59:45 +0200
commit1a9518ec04503b82830445eccafd71aadb8c0dbd (patch)
treee78b30c2a5ce524cebe168797e92d10e3d640809 /module
parentExtend for syntax to support multiple variables. (diff)
downloadcalp-1a9518ec04503b82830445eccafd71aadb8c0dbd.tar.gz
calp-1a9518ec04503b82830445eccafd71aadb8c0dbd.tar.xz
Add group-by.
Diffstat (limited to 'module')
-rw-r--r--module/util.scm6
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