modules now works as expected
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Tue, 20 Mar 2018 08:55:20 +0000 (09:55 +0100)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Tue, 20 Mar 2018 08:55:20 +0000 (09:55 +0100)
modules/language/python/compile.scm
modules/language/python/module.scm
modules/language/python/module/python.scm

index 3d9fc951a948cab68dc23681afe294a28ed04340..b287e4b1e1f16e9d258e352cd12e8f9a3e7c6fe4 100644 (file)
   ((_ (#:from (() . nm) . #f))
    `(use-modules (language python module ,@(map (lambda (nm) (exp vs nm))
                                                nm))))
+  ((_ (#:from (() . nm) . l))
+   `(use-modules ((language python module ,@(map (lambda (nm) (exp vs nm))
+                                                nm))
+                 #:select ,(map (lambda (x)
+                                  (match x
+                                         ((a . #f)
+                                          (exp vs a))
+                                         ((a . b)
+                                          (cons (exp vs a) (exp vs b)))))
+                                l))))
+                                             
   
   ((_ (#:name ((ids ...) . as)) ...)
    (pk x)
                    ((#:test (#:power #f ,as ())))
                    (#:assign 
                     ((#:verb
-                      ((@ (language python module) Module)
-                       ',(reverse (append '(language python module) path))
-                       ',(reverse path)))))))
-                      
+                      ((@ (language python module) import)
+                       ((@ (language python module) Module)
+                        ',(reverse (append '(language python module) path))
+                        ',(reverse path))
+                       ,(exp vs as)))))))
                 (exp
                  vs
                  `(#:expr-stmt
                    ((#:test (#:power #f ,(car ids) ())))
                    (#:assign
                     ((#:verb
-                      (((@ (language python module) import)
-                        ((@ (language python module) Module)
-                         ',(append '(language python module) path))
-                        ,(exp vs (car ids))))))))))))
+                      ((@ (language python module) import)
+                       ((@ (language python module) Module)
+                        ',(append '(language python module) path))
+                       ,(exp vs (car ids)))))))))))
         ids as))))
               
  (#:for
index 55120e01890517f50c857be412b79b98ae80fa37..5da5992c4a0e03fdc97f6668a0c2d6a86cd52a10 100644 (file)
@@ -57,7 +57,6 @@
   (define __init__
     (case-lambda
      ((self pre l nm)
-      (pk 2 l)
       (match l
        ((name)
        (set self '_path (reverse (cons name pre)))           
@@ -72,7 +71,6 @@
       (_cont self #f l #f nm))
 
      ((self l)
-      (pk 1)
       (if (pair? l)
          (if (and (> (length l) 3)
                   (equal? (list (list-ref l 0)
                                 (list-ref l 1)
                                 (list-ref l 2))
                           '(language python module)))
-             (__uppdate__ self (reverse '(language python module))
+             (__update__ self (reverse '(language python module))
                           (cdddr l) '()))            
          (__update__ self
                      (map string->symbol
   
   (define _make
     (lambda (self l nm)
-      (pk 'make)
       (rawset self '_private #f)
       (if (not (rawref self '_module))
          (begin
-           (pk 'a)
            (set self '__dict__ self)
            (set self '__name__ (string-join
                                 (map symbol->string (reverse nm)) "."))
-           (pk 'b)
            (let ((_module (resolve-module (reverse l))))
              (set self '_export (module-public-interface _module))
              (set self '_module _module)
-             (pk 'c)
              (hash-set! _modules l self))))))
       
   (define __getattribute__
                          (if (module-defined? m k)
                              (module-set! m k v)
                              (module-define! m k v)))                  
-                       (lambda x (pk 'fail x)))
+                       (lambda x (fail x)))
                 (fail))))))
 
   (define __delattr__
 
 (define-syntax import
   (lambda (x)
-    (pk (syntax->datum  x))
     (syntax-case x ()
       ((_ (a ...) var)
-       #`(import-f #,(case (pk (syntax-local-binding #'var))
+       #`(import-f #,(case (syntax-local-binding #'var)
                       ((lexical)
                        #'var)
                       ((global)
-                       #'(if (pk (module-defined? (current-module)
-                                                  (syntax->datum #'var)))
+                       #'(if (module-defined? (current-module)
+                                              (syntax->datum #'var))
                              var
                              #f))
                       (else
 
 (define (m? x) ((@ (language python module python) isinstance) x Module))
 (define (import-f x f . l)
-  (pk 'import-f f x)
-  (pk (if x
-         (if (m? x)
-             (apply (rawref x '__update__) l)
-             (apply f l))
-         (apply (pk f) l))))
+  (if x
+      (if (m? x)
+         (begin (apply (rawref x '__update__) l) x)
+         (apply f l))
+      (apply f l)))
index 093d03e27d3f13ada8f0de322ea281ff331a7a18..cfa0f3ebcdcf7ff0d379b9be7cdb84e677dc339f 100644 (file)
            (or
             (isinstance o (car cl))
             (isinstance o (cdr cl)))
-           (is-a? (ref (ref o '__class__) '__goops__) cl))))
+           (is-a? o (ref cl '__goops__)))))
 
 (define iter
   (case-lambda