Make -zip support infinite (circular) lists

master
Steve Lamb 12 years ago
parent f0dd4cc4fc
commit bd85b7cd8a
  1. 12
      dash.el

@ -803,14 +803,10 @@ groupings are equal to the length of the shortest input list.
If two lists are provided as arguments, return the groupings as a list If two lists are provided as arguments, return the groupings as a list
of cons cells. Otherwise, return the groupings as a list of lists. " of cons cells. Otherwise, return the groupings as a list of lists. "
(let* ((n (-min (-map 'length lists))) (let (results)
(level-lists (-map (-partial '-take n) lists)) (while (-none? 'null lists)
results) (setq results (cons (mapcar 'car lists) results))
(while (> n 0) (setq lists (mapcar 'cdr lists)))
(let ((split-lists (-map (-partial '-split-at 1) level-lists)))
(setq results (cons (-map 'caar split-lists) results))
(setq level-lists (-map 'cadr split-lists))
(setq n (1- n))))
(setq results (nreverse results)) (setq results (nreverse results))
(if (= (length lists) 2) (if (= (length lists) 2)
; to support backward compatability, return ; to support backward compatability, return

Loading…
Cancel
Save