(define-module (vcomponent group) #:use-module (vcomponent) #:use-module (vcomponent datetime) #:use-module (srfi srfi-19) #:use-module (srfi srfi-19 util) #:use-module (srfi srfi-41) #:use-module (srfi srfi-41 util) #:export (group-stream)) (define-stream (group-stream in-stream) (define (ein? day) (lambda (e) (event-contains? e (date->time-utc day)))) (let loop ((days (day-stream (time-utc->date (attr (stream-car in-stream) 'DTSTART)))) (stream in-stream)) (if (stream-null? stream) stream-null (let* ((day (stream-car days)) (tomorow (add-day (date->time-utc (drop-time day))))) (let ((head (stream-take-while (ein? day) stream)) (tail (filter-sorted-stream* (lambda (e) (timeevent-list group) (stream->list (cdr group)))