aboutsummaryrefslogtreecommitdiff
path: root/module/hnh/util.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/hnh/util.scm')
-rw-r--r--module/hnh/util.scm13
1 files changed, 13 insertions, 0 deletions
diff --git a/module/hnh/util.scm b/module/hnh/util.scm
index bbb1a5ec..ea7c0dd1 100644
--- a/module/hnh/util.scm
+++ b/module/hnh/util.scm
@@ -133,6 +133,19 @@
b1 body ...)))])
<collection>)))))
+ ((for (<var> <vars> ... . <tail>) in <collection> b1 body ...)
+ #'(call/ec
+ (lambda (break)
+ (map ((@ (ice-9 match) match-lambda)
+ [(<var> <vars> ... . <tail>)
+ (call/ec
+ (lambda (raw-continue)
+ (let ((continue
+ (case-lambda
+ (() #f)
+ (args (apply raw-continue args)))))
+ b1 body ...)))])
+ <collection>))))
((for <var> in <collection> b1 body ...)
(with-syntax ((break (datum->syntax stx 'break))
(continue (datum->syntax stx 'continue)))