improved interactive shell improvements
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 15 Sep 2017 22:53:21 +0000 (00:53 +0200)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 15 Sep 2017 22:53:21 +0000 (00:53 +0200)
modules/language/python/compile.scm

index c3158158e36345c4bb9b489d4840c39cb6440651..a14c342de950fbe11e45ffb5ea0f02ca8cabd8e1 100644 (file)
@@ -12,6 +12,8 @@
 
 (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
 
+(define s/d 'set!)
+
 (define-syntax clear-warning-data
   (lambda (x)
     (set! (@@ (system base message) %dont-warn-list) '())
            (let ((v (string->symbol v)))
              (if (null? addings)                   
                  (if op
-                     `(set! ,v (,(tr-op op) ,v ,u))
-                     `(set! ,v ,u))
+                     `(,s/d ,v (,(tr-op op) ,v ,u))
+                     `(,s/d ,v ,u))
                  (if op
-                     `(set! ,(exp vs kind)
+                     `(,s/d ,(exp vs kind)
                         (,(O 'fset-x) ,v (list ,@(map q addings))
                          (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u)))
                      
-                     `(set! ,(exp vs kind)
+                     `(,s/d ,(exp vs kind)
                         (,(O 'fset-x) ,v (list ,@(map q addings)) ,u)))))
            
            (let ((v (string->symbol v)))
              (if (null? addings)
                  (if op
-                     `(set! ,v (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u))
-                     `(set! ,v ,u))
+                     `(,s/d ,v (,(tr-op op) (,(C 'ref-x) ,v ,@addings) ,u))
+                     `(,s/d ,v ,u))
                  (let* ((rev (reverse addings))
                         (las (car rev))
                         (new (reverse (cdr rev))))
       ((#:test (#:power #f (#:identifier v . _) () . #f) #f))
       (#:assign (l)))
      (let ((s (string->symbol v)))
-       `(set! ,s ,(exp vs l))))
+       `(,s/d ,s ,(exp vs l))))
                            
     ((#:comp x #f)
      (exp vs x))
             (language python module ,@args)
             #:use-module (language python module python)))))
       (x '())))
+
+  (if (fluid-ref (@@ (system base compile) %in-compile))
+      (set! s/d 'set!)
+      (set! s/d 'define))
   
   (if (pair? start)
       (set! x (cdr x)))