summaryrefslogtreecommitdiff
path: root/modules/language/python/try.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-03-06 19:53:13 +0100
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-03-06 19:53:13 +0100
commitde1ebe88610f35371f50aa7d6699e2b3b34e79ec (patch)
tree9447c0fce3d4b87dd4db10ca9471a50f3bfb8d91 /modules/language/python/try.scm
parent251c4964e9c80cdce0363e0902d0fd3e65b3ca96 (diff)
parentdc79c0ac58f5bcc1f75a96307256dc4cce441f9f (diff)
Merge branch 'master' of gitlab.com:python-on-guile/python-on-guile
Diffstat (limited to 'modules/language/python/try.scm')
-rw-r--r--modules/language/python/try.scm13
1 files changed, 10 insertions, 3 deletions
diff --git a/modules/language/python/try.scm b/modules/language/python/try.scm
index a36263b..36d9b04 100644
--- a/modules/language/python/try.scm
+++ b/modules/language/python/try.scm
@@ -48,12 +48,19 @@
((_ E tag l)
(check E tag l))))
+(define (m code)
+ (let ((c code))
+ (lambda (k . l)
+ (if (eq? k StopIteration)
+ (apply c 'python k l)
+ (apply c k l)))))
+
(define-syntax handler
(syntax-rules (=>)
-
((handler ecx)
- (lambda (k tag . l)
- (handler ecx tag l)))
+ (m
+ (lambda (k tag . l)
+ (handler ecx tag l))))
((handler ((#:except E => lam) . ecx) tag l)
(if (check-exception E tag l)