diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-03-06 19:53:13 +0100 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-03-06 19:53:13 +0100 |
commit | de1ebe88610f35371f50aa7d6699e2b3b34e79ec (patch) | |
tree | 9447c0fce3d4b87dd4db10ca9471a50f3bfb8d91 /modules/language/python/module/python.scm | |
parent | 251c4964e9c80cdce0363e0902d0fd3e65b3ca96 (diff) | |
parent | dc79c0ac58f5bcc1f75a96307256dc4cce441f9f (diff) |
Merge branch 'master' of gitlab.com:python-on-guile/python-on-guile
Diffstat (limited to 'modules/language/python/module/python.scm')
-rw-r--r-- | modules/language/python/module/python.scm | 32 |
1 files changed, 19 insertions, 13 deletions
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)))))) |