aboutsummaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/hnh/util.scm10
1 files changed, 10 insertions, 0 deletions
diff --git a/module/hnh/util.scm b/module/hnh/util.scm
index 9a45704b..096e38c5 100644
--- a/module/hnh/util.scm
+++ b/module/hnh/util.scm
@@ -36,6 +36,7 @@
split-by
split-by-one-of
+ break/all
span-upto
cross-product
@@ -367,6 +368,15 @@
(lambda (first rest) (cons (cdr first) rest))))))
+(define (break/all predicate lst)
+ (let loop ((lst lst))
+ (if (null? lst)
+ '(())
+ (let ((fst rest (break predicate lst)))
+ (if (null? rest)
+ (list fst)
+ (cons fst (loop (cdr rest))))))))
+
;; Simar to span from srfi-1, but never takes more than
;; @var{count} items. Can however still take less.
;; @example