diff options
Diffstat (limited to 'modules/language/python/def.scm')
-rw-r--r-- | modules/language/python/def.scm | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/modules/language/python/def.scm b/modules/language/python/def.scm index 25edc7e..634daf4 100644 --- a/modules/language/python/def.scm +++ b/modules/language/python/def.scm @@ -1,6 +1,6 @@ (define-module (language python def) + #:use-module (ice-9 pretty-print) #:use-module (oop pf-objects) - #:use-module (language python for) #:use-module (language python exceptions) #:use-module (ice-9 match) #:use-module (srfi srfi-11) @@ -98,15 +98,16 @@ ((k ...) (map car kv)) ((s ...) (map ->kw (map car kv))) ((v ...) (map cdr kv))) - #`(object-method - (lambda* (#,@as . l) - (call-with-values (lambda () (get-akw l)) - (lambda (ww* kw) - (let*-values (((ww* k) (take-1 #,(null? ww-) ww* kw s v)) + #`(object-method + (lambda* (#,@as . l) + (call-with-values (lambda () (get-akw l)) + (lambda (ww* kw) + (let*-values (((ww* k) (take-1 #,(null? ww-) ww* + kw s v)) ...) - (let ((ww ww*) - (kw (pytonize kw))) - (let () code ...)))))))))))))) + (let ((ww ww*) + (kw (pytonize kw))) + (let () code ...)))))))))))))) (define-syntax-rule (def (f . args) code ...) (define f (lam args code ...))) @@ -130,15 +131,15 @@ (string->symbol x) x)))) +(define (mkw kw) (error "not implemented")) + (define-syntax m* (syntax-rules (* ** =) ((_ (= a b)) (list (symbol->keyword 'a) b)) ((_ (* a)) a) ((_ (** kw)) - (for ((k v : kw)) ((l '())) - (cons* v (mk-k k) l) - #:final (reverse l))) + (mkw kw)) ((_ a) (list a)))) (define-syntax py-apply |