diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-17 00:59:20 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-17 00:59:20 +0200 |
commit | b40e3b8b85eb3562cc49b2cbea041ee50949c46d (patch) | |
tree | 6b5a1087b7db3f161e8869ad3982ce1b5ac1f4c9 /modules/language/python/module/f2.scm | |
parent | a7346773d6b517fc09e5b776fb685daffc228528 (diff) |
completer
Diffstat (limited to 'modules/language/python/module/f2.scm')
-rw-r--r-- | modules/language/python/module/f2.scm | 30 |
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)) |