aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-04-03 22:52:09 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2019-04-03 22:52:09 +0200
commit780aa6593685a9b17dd64dfbdc179f1e2b048ec8 (patch)
tree2fbdee521e0f6f63227f4f68a4363f6862da9f06
parentMove examples from recurrence internal to tests. (diff)
downloadcalp-780aa6593685a9b17dd64dfbdc179f1e2b048ec8.tar.gz
calp-780aa6593685a9b17dd64dfbdc179f1e2b048ec8.tar.xz
Add stream-find.
-rw-r--r--module/srfi/srfi-41/util.scm7
1 files changed, 5 insertions, 2 deletions
diff --git a/module/srfi/srfi-41/util.scm b/module/srfi/srfi-41/util.scm
index 5bef95cb..2492d088 100644
--- a/module/srfi/srfi-41/util.scm
+++ b/module/srfi/srfi-41/util.scm
@@ -21,9 +21,12 @@
(m ms (stream-car+cdr min)))
(stream-cons m (interleave-streams < (cons ms other)))))))
-;;; Varför är allting så långsamt‽‽‽‽‽‽‽‽
-
(define-public (filter-sorted-stream proc stream)
(stream-take-while
proc (stream-drop-while
(negate proc) stream)))
+
+(define-public (stream-find pred stream)
+ (cond ((stream-null? stream) #f)
+ ((pred (stream-car stream)) (stream-car stream))
+ (else (stream-find pred (stream-cdr stream)))))