diff options
Diffstat (limited to 'modules/language/python/def.scm')
-rw-r--r-- | modules/language/python/def.scm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/modules/language/python/def.scm b/modules/language/python/def.scm index 7622b7a..b2a8de2 100644 --- a/modules/language/python/def.scm +++ b/modules/language/python/def.scm @@ -77,7 +77,7 @@ (define (->kw x) (symbol->keyword (syntax->datum x))) - (syntax-case x () + (syntax-case x (*) ((_ (arg ...) code ...) (let* ((as (fold get-as '() #'(arg ...))) (kw (fold get-kw '() #'(arg ...))) @@ -143,7 +143,13 @@ (define-syntax py-apply (lambda (x) - (syntax-case x () + (syntax-case x (*) + ((_ f a ... (* x)) + (and-map (lambda (x) (symbol? (syntax->datum x))) #'(a ...)) + #'(if (pair? x) + (apply f a ... x) + (apply f a ... (to-list x)))) + ((_ f a ...) (if (no #'(a ...)) #'(f a ...) |