diff options
Diffstat (limited to 'module/srfi/srfi-41/util.scm')
-rw-r--r-- | module/srfi/srfi-41/util.scm | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/module/srfi/srfi-41/util.scm b/module/srfi/srfi-41/util.scm index 2492d088..56c50ce9 100644 --- a/module/srfi/srfi-41/util.scm +++ b/module/srfi/srfi-41/util.scm @@ -26,6 +26,17 @@ proc (stream-drop-while (negate proc) stream))) +(define-public (filter-sorted-stream* pred? keep-remaining? stream) + (cond [(stream-null? stream) stream-null] + [(keep-remaining? (stream-car stream)) stream] + [(pred? (stream-car stream)) + (stream-cons (stream-car stream) + (filter-sorted-stream* + pred? keep-remaining? + (stream-cdr stream)))] + [else (filter-sorted-stream* pred? keep-remaining? + (stream-cdr stream))])) + (define-public (stream-find pred stream) (cond ((stream-null? stream) #f) ((pred (stream-car stream)) (stream-car stream)) |