diff options
author | Thomas White <taw@physics.org> | 2021-12-21 12:58:57 +0100 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2022-01-25 20:14:51 +0100 |
commit | 0171a2975024ea7155b02951943754688488ecee (patch) | |
tree | 80e08c1439818497cfbfe91e5d424d6028902ffd /guile/starlet/utils.scm | |
parent | e6910f04437e23047c9a1519c9c77af55fcbf4fe (diff) |
Separate cue lists from playbacks and crossfades
Diffstat (limited to 'guile/starlet/utils.scm')
-rw-r--r-- | guile/starlet/utils.scm | 18 |
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 '()))) |