diff options
Diffstat (limited to 'modules/language/python/module/python.scm')
-rw-r--r-- | modules/language/python/module/python.scm | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/modules/language/python/module/python.scm b/modules/language/python/module/python.scm index ef3b190..418c325 100644 --- a/modules/language/python/module/python.scm +++ b/modules/language/python/module/python.scm @@ -35,7 +35,7 @@ divmod enumerate filter format getattr hasattr hex isinstance iter map sum id input oct ord pow super - sorted)) + sorted zip)) (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) @@ -210,6 +210,19 @@ (pylist-sort! l #:key key #:reverse reverse) l) +(define (zip . l) + (let ((l ((@ (guile) map) wrap-in l))) + ((make-generator () + (lambda (yield) + (let lp () + (let lp2 ((l l) (r '())) + (if (pair? l) + (call-with-values (lambda () (next (car l))) + (lambda z + (lp2 (cdr l) (append (reverse z) r)))) + (begin + (apply yield (reverse r)) + (lp)))))))))) |