aboutsummaryrefslogtreecommitdiff
path: root/doc/ref
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-09-11 17:54:35 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2023-09-11 19:58:54 +0200
commit634502e7246f8850ad6c649b79ae9f072f45baf4 (patch)
tree56ee3154fbd08ea175ef141fbf8c22407ec5ca83 /doc/ref
parentChange how entry point is handled. (diff)
downloadcalp-634502e7246f8850ad6c649b79ae9f072f45baf4.tar.gz
calp-634502e7246f8850ad6c649b79ae9f072f45baf4.tar.xz
Introduce stream-split-by.
This procedure isn't currently used, but as noted is really useful for grouping a character stream into a word stream, which is a later commit will use for it for justifying posibly infinite streams of text.
Diffstat (limited to 'doc/ref')
-rw-r--r--doc/ref/guile/srfi-41.texi20
1 files changed, 20 insertions, 0 deletions
diff --git a/doc/ref/guile/srfi-41.texi b/doc/ref/guile/srfi-41.texi
index 310751ec..d8020ecc 100644
--- a/doc/ref/guile/srfi-41.texi
+++ b/doc/ref/guile/srfi-41.texi
@@ -73,6 +73,26 @@ times.
stream cons, but eval arguments beforehand.
@end defun
+@defun stream-split-by pred strm
+Chunks the content of @var{strm} into lists, breaking on @var{pred}.
+If the end of the stream is reached, the remaining objects
+are put into a final chunk.
+
+Can for example be used to split a stream of characters into a stream
+of words.
+
+@lisp
+(stream-split-by (lambda (c) (char=? c #\space))
+ (-> "This is a short test"
+ string->list list->stream))
+⇒ #<stream (#\T #\h #\i #\s #\space)
+ (#\i #\s #\space)
+ (#\a #\space)
+ (#\s #\h #\o #\r #\t #\space)
+ (#\t #\e #\s #\t)>
+@end lisp
+@end defun
+
@defun stream-timeslice-limit stream timeslice
Wrap a stream in time limits. Each element has at most @var{timeslice}
seconds to produce a value, otherwise the stream ends. Useful for finding the