diff --git a/pyffi.scm b/pyffi.scm index dcbe98f..2a79447 100644 --- a/pyffi.scm +++ b/pyffi.scm @@ -570,8 +570,8 @@ EOF (%begin (r 'begin)) (%set! (r 'set!)) (not (r 'not)) - (alist-ref (r 'alist-ref)) - (alist-update! (r 'alist-update!)) + (hash-table-ref/default (r 'hash-table-ref/default)) + (hash-table-set! (r 'hash-table-set!)) (py-eval (r 'py-eval)) (py-apply (r 'py-apply)) (raise-python-exception (r 'raise-python-exception)) @@ -646,6 +646,7 @@ EOF (let ((scheme-name (member 'scheme-name: rest)) (kw (member 'kw: rest))) (let ((%define (r 'define)) + (%receive (r 'receive)) (%quote (r 'quote)) (%cons (r 'cons)) (%list (r 'list)) @@ -658,6 +659,8 @@ EOF (%if (r 'if)) (%list->vector (r 'list->vector)) (%->string (r '->string)) + (args (r 'args)) + (kwargs (r 'kwargs)) (parse-argument-list (r 'parse-argument-list)) (PyObject_GetAttrString (r 'PyObject_GetAttrString)) (PyObject_CallObject (r 'PyObject_CallObject)) @@ -671,15 +674,15 @@ EOF (,PyObject_CallObject (,PyObject_GetAttrString ,obj ,(->string name) ) (,%list->vector ,rest))) - (let ((kwargs (map (compose string->keyword symbol->string) (cadr kw)))) + (let ((the-kwargs (map (compose string->keyword symbol->string) (cadr kw)))) `(,%define (,proc-name ,obj #!rest ,rest) - (receive - (args kwargs) - (,parse-argument-list ,rest ',kwargs) + (,%receive + (,args ,kwargs) + (,parse-argument-list ,rest ',the-kwargs) (,PyObject_Call (,PyObject_GetAttrString ,obj ,(->string name) ) - (list->vector args) - (,%if (,%null? kwargs) #f kwargs)) + (list->vector ,args) + (,%if (,%null? ,kwargs) #f ,kwargs)) )) )) ))