diff options
Diffstat (limited to 'modules/language/python/compile.scm')
-rw-r--r-- | modules/language/python/compile.scm | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm index a040c7d..10320f5 100644 --- a/modules/language/python/compile.scm +++ b/modules/language/python/compile.scm @@ -407,7 +407,7 @@ '())))) (define (kw->li dict) - (for ((k v : dict) (l '())) + (for ((k v : dict)) ((l '())) (cons* v (symbol->keyword (string->symbol k)) l) #:final (reverse l))) @@ -528,12 +528,12 @@ `(,s/d ,v (,(C 'setwrap) ,u))) (if op `(,s/d ,(exp vs kind) - (,(O 'fset-x) ,v (list ,@(map q addings)) + (,(C 'fset-x) ,v ,addings (,(C 'setwrap) (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u)))) `(,s/d ,(exp vs kind) - (,(O 'fset-x) ,v (list ,@(map q addings)) + (,(C 'fset-x) ,v ,addings (,(C 'setwrap) ,u))))) (if (null? addings) @@ -757,26 +757,24 @@ r)) (class (exp vs class)) (parents (match parents - (() - (cons '() '())) - (#f - (cons '() '())) + (() #f) + (#f #f) ((#:arglist . _) - (get-addings vs (list parents))))) - (is-func (is-functional parents)) - (parents (filt parents))) + (get-addings vs (list parents)))))) `(define ,class (,(C 'class-decor) ,decor (,(C 'with-class) ,class - (,(mk-p-class - ,class - (,(C 'ref-x) ,(C 'arglist->pkw) ,@parents) + (,(C 'mk-p-class) + ,class + ,(if parents + `(,(C 'ref-x) ,(C 'arglist->pkw) ,@parents) + `(,(G 'cons) '() '())) ,@(match (filter-defs (exp vs defs)) (('begin . l) l) ((('begin . l)) l) - (l l)))))))))))) + (l l))))))))))) (#:scm ((_ (#:string _ s)) (with-input-from-string s read))) @@ -1702,9 +1700,9 @@ ((_ v (#:fast-id f _) . l) (ref-x (f v) . l)) ((_ v (#:identifier x) . l) - (ref-x (refq v x) . l)) + (ref-x (ref v x) . l)) ((_ v (#:identifier x) . l) - (ref-x (refq v x) . l)) + (ref-x (ref v x) . l)) ((_ v (#:call-obj x) . l) (ref-x (x v) . l)) ((_ v (#:call x ...) . l) @@ -1721,7 +1719,7 @@ (define-syntax del-x (syntax-rules () ((_ v (#:identifier x)) - (ref-x (refq v 'x))) + (ref-x (ref v 'x))) ((_ v (#:call-obj x)) (values)) ((_ v (#:call x ...)) @@ -1738,6 +1736,11 @@ ((_ v (a ... b) val) (set-x-2 (ref-x v a ...) b val)))) +(define-syntax fset-x + (syntax-rules () + ((_ v ((#:identifier x) ...) val) + ((@ (oop pf-objects) fset-x) v (list x ...) val)))) + (define-syntax set-x-2 (syntax-rules () ((_ v (#:fastfkn-ref f id) val) @@ -1775,3 +1778,4 @@ (syntax-rules () ((_ s c) (syntax-parameterize ((*class* (lambda (x) #'s))) c)))) + |