From 0171a2975024ea7155b02951943754688488ecee Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 21 Dec 2021 12:58:57 +0100 Subject: Separate cue lists from playbacks and crossfades --- guile/starlet/utils.scm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'guile/starlet/utils.scm') 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 '()))) -- cgit v1.2.3