diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-03-20 15:06:43 +0100 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-03-20 15:06:43 +0100 |
commit | 1b580e10a568e0f34d45c197d1c200566dfda5ab (patch) | |
tree | 0c9418002bc75bdee523d59bc7d33d85f8f2c665 /modules/language/python/module.scm | |
parent | 54f0ed4762f8aec49f894901a490a0821f176de8 (diff) |
collections now compiles
Diffstat (limited to 'modules/language/python/module.scm')
-rw-r--r-- | modules/language/python/module.scm | 14 |
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))))))))))) |