summaryrefslogtreecommitdiff
path: root/modules/language/python/module/f2.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2017-10-17 00:59:20 +0200
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2017-10-17 00:59:20 +0200
commitb40e3b8b85eb3562cc49b2cbea041ee50949c46d (patch)
tree6b5a1087b7db3f161e8869ad3982ce1b5ac1f4c9 /modules/language/python/module/f2.scm
parenta7346773d6b517fc09e5b776fb685daffc228528 (diff)
completer
Diffstat (limited to 'modules/language/python/module/f2.scm')
-rw-r--r--modules/language/python/module/f2.scm30
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/language/python/module/f2.scm b/modules/language/python/module/f2.scm
new file mode 100644
index 0000000..3a00158
--- /dev/null
+++ b/modules/language/python/module/f2.scm
@@ -0,0 +1,30 @@
+(define-module (language python module f2)
+ #:use-module (language python exceptions)
+ #:use-module (language python for)
+ #:use-module (language python yield)
+ #:use-module (language python try)
+ #:re-export (next send sendException Exception)
+ #:export (gen))
+
+(define gen
+ (make-generator
+ (lambda (yield n)
+ (try
+ (lambda ()
+ (let lp ((i 0) (s 0))
+ (if (< i n)
+ (let ((x (+ s i)))
+ (call-with-values (lambda () (yield x))
+ (lambda x (pk 'send x)))
+ (lp (+ i 1) x)))))
+
+ (#:except Exception =>
+ (lambda (tag l)
+ (apply pk tag l)))
+
+ #:finally
+ (lambda ()
+ (pk 'yeeeeeees))))))
+
+(for ((i : (gen 10))) ()
+ (pk i))