aboutsummaryrefslogtreecommitdiff
path: root/module/srfi/srfi-41/util.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/srfi/srfi-41/util.scm')
-rw-r--r--module/srfi/srfi-41/util.scm11
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))