diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-08-29 21:05:37 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-08-29 21:05:37 +0200 |
commit | 3d44139af1b65ec71abafec939b5240d3821490b (patch) | |
tree | 5206b8a818456b3ec0c740cf14d25d8351c77c28 /modules/language/python/module/_python.scm | |
parent | 9bd339b34f09f5b582cb8b77a11841f5de9ab695 (diff) |
shutil.py
Diffstat (limited to 'modules/language/python/module/_python.scm')
-rw-r--r-- | modules/language/python/module/_python.scm | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/modules/language/python/module/_python.scm b/modules/language/python/module/_python.scm index 149946e..b8c5118 100644 --- a/modules/language/python/module/_python.scm +++ b/modules/language/python/module/_python.scm @@ -249,7 +249,22 @@ (define (idx x) x) -(def (py-min (* l) (= key idx) (= default miss)) + +(define-syntax min + (lambda (x) + (syntax-case x () + ((_ x y) + #'(if (and (number? x) (number? y)) + (if (<= x y) x y) + (py-min- x y))) + + ((_ l ...) + #'(if (and (number? l) ...) + ((@ (guile) min) l ...) + (py-min- l ...))) + (_ #'py-min-)))) + +(def (py-min- (* l) (= key idx) (= default miss)) (let lp ((l l)) (match l ((it) @@ -269,7 +284,20 @@ b))) (_ (lp ((@ (guile) list) l)))))) -(def (py-max (* l) (= key idx) (= default miss)) +(define-syntax max + (lambda (x) + (syntax-case x () + ((_ x y) + #'(if (and (number? x) (number? y)) + (if (>= x y) x y) + (py-max- x y))) + ((_ l ...) + #'(if (and (number? l) ...) + ((@ (guile) max) l ...) + (py-max- l ...))) + (_ #'py-max-)))) + +(def (py-max- (* l) (= key idx) (= default miss)) (let lp ((l l)) (match l ((it) @@ -303,8 +331,6 @@ (define-syntax-rule (super . l) (py-super-mac . l)) -(define min py-min) -(define max py-max) (define list pylist) (define reversed py-reversed) (define (key-id x) x) |