summaryrefslogtreecommitdiff
path: root/modules/language/python/compile.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/compile.scm')
-rw-r--r--modules/language/python/compile.scm38
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))))
+