From 1feb32ab54b5955464db80919d24716a8ba477c1 Mon Sep 17 00:00:00 2001 From: Stefan Israelsson Tampe Date: Wed, 28 Feb 2018 13:24:08 +0100 Subject: heapq added --- modules/language/python/list.scm | 45 ++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'modules/language/python/list.scm') 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 + #:export (to-list to-pylist 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 )) + (let ((out (make ))) + (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 )) (let ((out (make ))) (slot-set! out 'i (- (slot-ref o 'n) 1)) @@ -574,23 +580,9 @@ (next-method))))) -(define-method (wrap-in (o )) - (let ((out (make ))) - (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 )) - (let ((out (make ))) - (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 )) o) +(define-method (wrap-in (o )) o) (define-method (wrap-in (o )) 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) -- cgit v1.2.3