+ append now implemented
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Sat, 16 Sep 2017 22:34:11 +0000 (00:34 +0200)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Sat, 16 Sep 2017 22:34:11 +0000 (00:34 +0200)
modules/language/python/compile.scm
modules/language/python/list.scm

index 3b5bd8f16f673b31103b65d69a6f93f22c499c61..4aa67ec4b736951e01757bac3969723396a23ee2 100644 (file)
      ((hash-ref tagis tag (lambda y (warn "not tag in tagis") x)) x vs))
 
     (#:True  #t)
+    (#:null  ''())
     (#:False #f)
     (#:pass  `(values))
     (#:break
index 0b98b61a6902e1a3ca7fb09df9b43a2d820b0b2a..b8f1860c0aad2326b6a9312ef825499bddca02f6 100644 (file)
         (format port "[]")
         (format port "[~a~{, ~a~}]" (car l) (cdr l)))))
 
+
+(define-method (+ (o1 <py-list>) (o2 <py-list>))
+  (let* ((vec1 (slot-ref o1 'vec))
+         (vec2 (slot-ref o2 'vec))        
+         (n1   (slot-ref o1 'n))
+         (n2   (slot-ref o2 'n))
+         (n    (+ n1 n2))
+         (vec  (make-vector (* 2 n)))
+         (o    (make <py-list>)))
+
+    (let lp ((i1 0))
+      (if (< i1 n1)
+          (begin
+            (vector-set! vec i1 (vector-ref vec1 i1))
+            (lp (+ i1 1)))
+          (let lp ((i2 0) (i i1))
+            (if (< i2 n2)
+                (begin
+                  (vector-set! vec i (vector-ref vec2 i2))
+                  (lp (+ i2 1) (+ i 1)))))))
+    
+    (slot-set! o 'n   n  )
+    (slot-set! o 'vec vec)
+    o))
+
+(define-method (+ (o1 <pair>) (o2 <pair>))
+  (append o1 o2))
+           
+    
+
+