diff options
Diffstat (limited to 'modules/language/python/guilemod.scm')
-rw-r--r-- | modules/language/python/guilemod.scm | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/modules/language/python/guilemod.scm b/modules/language/python/guilemod.scm index 1e3351e..c8dc413 100644 --- a/modules/language/python/guilemod.scm +++ b/modules/language/python/guilemod.scm @@ -1,6 +1,8 @@ (define-module (language python guilemod) #:export ()) +(define-syntax-rule (aif it p . l) (let ((it p)) (if it . l))) + (define-syntax-rule (mk-commands path mod-C define-C define-exp-C define-set-C) (begin (define mod-C (resolve-module 'path)) @@ -241,27 +243,15 @@ (define pload (let ((guile-load (@ (guile) primitive-load-path))) (lambda (p . q) - (let ((tag (make-prompt-tag))) - (call-with-prompt - tag - (lambda () - (guile-load p (lambda () (abort-to-prompt tag)))) - (lambda (k) - (let lp ((l *extension-dispatches*)) - (if (pair? l) - (let lp2 ((u (caar l))) - (if (pair? u) - (let ((tag (make-prompt-tag))) - (call-with-prompt - tag - (lambda () - (guile-load (string-append p "." (car u)) - (lambda () (abort-to-prompt tag)))) - (lambda (k) (lp2 (cdr u))))) - (lp (cdr l)))))) - (if (pair? q) - ((car q)) - (error (string-append "no code for path " p))))))))) + (let lp ((l *extension-dispatches*)) + (if (pair? l) + (let lp2 ((u (caar l))) + (if (pair? u) + (aif it (%search-load-path (string-append p "." (car u))) + (apply guile-load it q) + (lp2 (cdr u))) + (lp (cdr l)))) + (apply guile-load p q)))))) (define-set-G primitive-load-path pload) |