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/module/python.scm | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'modules/language/python/module/python.scm') diff --git a/modules/language/python/module/python.scm b/modules/language/python/module/python.scm index 2ea57eb..8264fee 100644 --- a/modules/language/python/module/python.scm +++ b/modules/language/python/module/python.scm @@ -85,18 +85,18 @@ (define staticmethod static-method) (define (enumerate l) - (make-generator enumerate - (lambda (yield) + ((make-generator () + (lambda (yield) (for ((x : l)) ((i 0)) (yield i x) - (+ i 1))))) + (+ i 1)))))) (define (filter f l) - (make-generator enumerate - (lambda (yield) - (for ((x : l)) () - (if (f x) - (yield x)))))) + ((make-generator () + (lambda (yield) + (for ((x : l)) () + (if (f x) + (yield x))))))) (define miss ((@ (guile) list) 'miss)) @@ -174,7 +174,7 @@ (let lp ((l l)) (match l ((it) - (for ((x : it)) ((s default) (b default)) + (for ((x : it)) ((s miss) (b miss)) (if (eq? s miss) (values (key x) x) (let ((k (key x))) @@ -183,7 +183,10 @@ (values s b)))) #:final (if (eq? b miss) - (raise ValueError "min does not work for zero length list") + (if (eq? default miss) + (raise ValueError + "min does not work for zero length list") + default) b))) (_ (lp ((@ (guile) list) l)))))) @@ -191,8 +194,8 @@ (let lp ((l l)) (match l ((it) - (for ((x : it)) ((s default) (b default)) - (if (eq? default miss) + (for ((x : it)) ((s miss) (b miss)) + (if (eq? s miss) (values (key x) x) (let ((k (key x))) (if (> k s) @@ -200,7 +203,10 @@ (values s b)))) #:final (if (eq? b miss) - (raise ValueError "min does not work for zero length list") + (if (eq? default miss) + (raise ValueError + "min does not work for zero length list") + default) b))) (_ (lp ((@ (guile) list) l)))))) -- cgit v1.2.3