summaryrefslogtreecommitdiff
path: root/modules/language/python/module.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-03-20 15:06:43 +0100
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-03-20 15:06:43 +0100
commit1b580e10a568e0f34d45c197d1c200566dfda5ab (patch)
tree0c9418002bc75bdee523d59bc7d33d85f8f2c665 /modules/language/python/module.scm
parent54f0ed4762f8aec49f894901a490a0821f176de8 (diff)
collections now compiles
Diffstat (limited to 'modules/language/python/module.scm')
-rw-r--r--modules/language/python/module.scm14
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/language/python/module.scm b/modules/language/python/module.scm
index 5da5992..9884c2b 100644
--- a/modules/language/python/module.scm
+++ b/modules/language/python/module.scm
@@ -11,6 +11,13 @@
(define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
+(define-syntax-rule (in-scheme x)
+ (let ((lan (current-language)))
+ (dynamic-wind
+ (lambda () (current-language 'scheme))
+ (lambda () x)
+ (lambda () (current-language lan)))))
+
(define (private mod)
((ref mod '__setprivate__) #t))
(define (public mod)
@@ -117,7 +124,7 @@
(set self '__dict__ self)
(set self '__name__ (string-join
(map symbol->string (reverse nm)) "."))
- (let ((_module (resolve-module (reverse l))))
+ (let ((_module (in-scheme (resolve-module (reverse l)))))
(set self '_export (module-public-interface _module))
(set self '_module _module)
(hash-set! _modules l self))))))
@@ -171,7 +178,7 @@
(define __iter__
(lambda (self)
- (define m (_m obj))
+ (define m (_m self))
((make-generator ()
(lambda (yield)
(define l '())
@@ -181,8 +188,7 @@
(if (pair? l)
(begin
(apply yield (car l))
- (lp (cdr l)))))
- (hash-for-each yield (slot-ref self 'h))))))))
+ (lp (cdr l)))))))))))