RosettaCodeData/Task/Range-extraction/Emacs-Lisp/range-extraction-1.l

16 lines
497 B
Common Lisp

(require 'gnus-range)
(defun rangext (lst)
(mapconcat (lambda (item)
(if (consp item)
(if (= (+ 1 (car item) ) (cdr item) )
(format "%d,%d" (car item) (cdr item) )
(format "%d-%d" (car item) (cdr item) ))
(format "%d" item)))
(gnus-compress-sequence lst)
","))
(insert (rangext '(0 1 2 4 6 7 8 11 12 14
15 16 17 18 19 20 21 22 23 24
25 27 28 29 30 31 32 33 35 36
37 38 39) ))