diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-02-28 13:24:08 +0100 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-02-28 13:24:08 +0100 |
commit | 1feb32ab54b5955464db80919d24716a8ba477c1 (patch) | |
tree | aa48c36b2918233948bf473eec3c7b9d590f5921 /modules/language/python/list.scm | |
parent | 0f66dc88c5cc95f1dee7e4698c079a5554ddc886 (diff) |
heapq added
Diffstat (limited to 'modules/language/python/list.scm')
-rw-r--r-- | modules/language/python/list.scm | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/modules/language/python/list.scm b/modules/language/python/list.scm index 0cbd30a..b101da7 100644 --- a/modules/language/python/list.scm +++ b/modules/language/python/list.scm @@ -11,7 +11,7 @@ #:use-module (language python try) #:use-module (language python exceptions) #:use-module (language python persist) - #:export (to-list to-pylist <py-list> + #:export (to-list to-pylist <py-list> py-list pylist-append! pylist-slice pylist-subset! pylist-reverse! pylist-pop! pylist-count pylist-extend! len in @@ -252,9 +252,7 @@ (vec (slot-ref o 'vec)) (N (vector-length vec))) (if (< n N) - (begin - (vector-set! vec n val) - (slot-set! o 'n (+ n 1))) + (vector-set! vec n val) (let* ((N (* 2 N)) (vec2 (make-vector N))) (let lp ((i 0)) @@ -540,6 +538,14 @@ (slot-set! out 'd 1) out)) +(define-method (wrap-in (o <vector>)) + (let ((out (make <py-list-iter>))) + (slot-set! out 'n (vector-length o)) + (slot-set! out 'vec o) + (slot-set! out 'i 0) + (slot-set! out 'd 1) + out)) + (define-method (py-reversed (o <py-list>)) (let ((out (make <py-list-iter>))) (slot-set! out 'i (- (slot-ref o 'n) 1)) @@ -574,23 +580,9 @@ (next-method))))) -(define-method (wrap-in (o <py-list-iter>)) - (let ((out (make <py-list-iter>))) - (slot-set! out 'vec (slot-ref o 'vec)) - (slot-set! out 'i (slot-ref o 'i)) - (slot-set! out 'n (slot-ref o 'n)) - (slot-set! out 'd (slot-ref o 'd)) - out)) - -(define-method (wrap-in (o <py-seq-iter>)) - (let ((out (make <py-seq-iter>))) - (slot-set! out 'o (slot-ref o 'o)) - (slot-set! out 'i (slot-ref o 'i)) - (slot-set! out 'n (slot-ref o 'n)) - (slot-set! out 'd (slot-ref o 'd)) - out)) - +(define-method (wrap-in (o <py-list-iter>)) o) +(define-method (wrap-in (o <py-seq-iter>)) o) (define-method (wrap-in (o <py-seq-iter> )) o) @@ -832,6 +824,8 @@ (for ((x1 : o1) (x2 : o2)) () (if (< x1 x2) (break #t)) + (if (> x1 x2) + (break #f)) #:final (< n1 n2)))) @@ -841,6 +835,9 @@ (for ((x1 : o1) (x2 : o2)) () (if (< x1 x2) (break #t)) + (if (> x1 x2) + (break #f)) + #:final (<= n1 n2)))) @@ -850,6 +847,9 @@ (for ((x1 : o1) (x2 : o2)) () (if (> x1 x2) (break #t)) + (if (< x1 x2) + (break #f)) + #:final (> n1 n2)))) @@ -859,6 +859,9 @@ (for ((x1 : o1) (x2 : o2)) () (if (> x1 x2) (break #t)) + (if (< x1 x2) + (break #f)) + #:final (>= n1 n2)))) @@ -932,3 +935,5 @@ (break #t)) #:final #f)) + +(define py-list list) |