diff options
Diffstat (limited to 'modules/language/python/list.scm')
-rw-r--r-- | modules/language/python/list.scm | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/modules/language/python/list.scm b/modules/language/python/list.scm index 779ed73..1afa56f 100644 --- a/modules/language/python/list.scm +++ b/modules/language/python/list.scm @@ -298,6 +298,13 @@ (define-method (+ (o1 <string>) (o2 <string>)) (string-append o1 o2)) +(define-method (+ (o1 <symbol>) (o2 <symbol>)) + (string->symbol + (string-append + (symbol->string o1) + (symbol->string o2)))) + +(define-method (* (x <integer>) (o1 <py-list>)) (* o1 x)) (define-method (* (o1 <py-list>) (x <integer>)) (let* ((vec (slot-ref o1 'vec)) (n (slot-ref o1 'n)) @@ -318,6 +325,7 @@ (slot-set! o 'vec vec2) o)) +(define-method (* (x <integer>) (vec <string>)) (* vec x)) (define-method (* (vec <string>) (x <integer>)) (let* ((n (string-length vec)) (n2 (* n x)) @@ -333,6 +341,7 @@ (lp1 (+ i 1) j))))) vec2)) +(define-method (* (x <integer>) (l <pair>)) (* l x)) (define-method (* (l <pair>) (x <integer>)) (let lp1 ((i 0)) (if (< i x) @@ -343,12 +352,6 @@ '()))) -(define-method (+ (o1 <pair>) (o2 <pair>)) - (append o1 o2)) - -(define-method (+ (o1 <string>) (o2 <string>)) - (string-append o1 o2)) - ;;REVERSE (define-method (pylist-reverse! (o <py-list>)) (let* ((N (slot-ref o 'n)) @@ -690,6 +693,8 @@ (define pylist list) +(define-method (py-class (o <py-list>) list)) + (define (pylist-listing) (let ((l (to-pylist |