aboutsummaryrefslogtreecommitdiff
path: root/guile/starlet/utils.scm
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-12-21 12:58:57 +0100
committerThomas White <taw@physics.org>2022-01-25 20:14:51 +0100
commit0171a2975024ea7155b02951943754688488ecee (patch)
tree80e08c1439818497cfbfe91e5d424d6028902ffd /guile/starlet/utils.scm
parente6910f04437e23047c9a1519c9c77af55fcbf4fe (diff)
Separate cue lists from playbacks and crossfades
Diffstat (limited to 'guile/starlet/utils.scm')
-rw-r--r--guile/starlet/utils.scm18
1 files changed, 17 insertions, 1 deletions
diff --git a/guile/starlet/utils.scm b/guile/starlet/utils.scm
index 16e3364..2046a0a 100644
--- a/guile/starlet/utils.scm
+++ b/guile/starlet/utils.scm
@@ -20,13 +20,15 @@
;;
(define-module (starlet utils)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-8)
#:export (print-hash-table
copy-hash-table
in-range
mean
flatten-sublists
more-than-one
- hirestime))
+ hirestime
+ categorize))
(define (print-hash-table ht)
@@ -83,3 +85,17 @@
(/ (cdr a)
1000000))))
+
+(define (categorize-rec predicates items so-far)
+ (if (nil? predicates)
+ (reverse (cons items so-far))
+ (receive
+ (selected-items remaining-items)
+ (partition (car predicates) items)
+ (categorize-rec (cdr predicates)
+ remaining-items
+ (cons selected-items so-far)))))
+
+
+(define (categorize items . predicates)
+ (apply values (categorize-rec predicates items '())))