(slices '(a b c d e f g) 3) ⇒ ((a b c) (d e f) (g)) (slices '(a b c d e f g) 3 #t 'z) ⇒ ((a b c) (d e f) (g z z))で、それは置いといて、Pythonのzip(*[iter(s)]*n)ってのは、n個のiteraterを作ってzipしてるってことだと思う(python知らね)。
Gaucheだとgeneratorを使って実現できるんじゃないかな。Gaucheにもzip手続きはあるけど、gzipはない。gzipなしで書くとこんな感じのことかな。
(use gauche.generator) (generator->list (apply gmap list (make-list 3 (giota 15)))) ;; => ((0 1 2) (3 4 5) (6 7 8) (9 10 11) (12 13 14))gzipを定義するとしたらこんなんでいいのかな。
(use gauche.generator) (define (gzip . list-of-list) (apply gmap list list-of-list)) (generator->list (apply gzip (make-list 3 (giota 15)))) ;; => ((0 1 2) (3 4 5) (6 7 8) (9 10 11) (12 13 14))
0 件のコメント:
コメントを投稿