changeset 50449:f85be9da34a2

Adjust number-sequence code
author Vinicius Jose Latorre <viniciusjl@ig.com.br>
date Sat, 05 Apr 2003 02:13:44 +0000
parents 6ced6cabcc81
children 33c5c2bf40c2
files lisp/ChangeLog lisp/subr.el
diffstat 2 files changed, 19 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Apr 05 01:03:23 2003 +0000
+++ b/lisp/ChangeLog	Sat Apr 05 02:13:44 2003 +0000
@@ -1,3 +1,7 @@
+2003-04-04  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+	* subr.el (number-sequence): Adjust code.
+
 2003-04-04  Stefan Monnier  <monnier@cs.yale.edu>
 
 	* textmodes/refill.el (refill-fill-paragraph-at): Undo last fix.
--- a/lisp/subr.el	Sat Apr 05 01:03:23 2003 +0000
+++ b/lisp/subr.el	Sat Apr 05 02:13:44 2003 +0000
@@ -176,20 +176,23 @@
 	   (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
 	   x))))
 
-(defun number-sequence (from &optional to)
+(defun number-sequence (from &optional to inc)
   "Return a sequence of numbers from FROM to TO (both inclusive) as a list.
-The Nth element of the list is (+ FROM N) where N counts from zero.
+INC is the increment used between numbers in the sequence.
+So, the Nth element of the list is (+ FROM (* N INC)) where N counts from
+zero.
+If INC is nil, it defaults to 1 (one).
 If TO is nil, it defaults to FROM.
-If TO is less than FROM, the value is nil."
-  (if to
-      (if (< to from)
-	  (setq to (1- from)))
-    (setq to from))
-  (let* ((list (make-list (- (1+ to) from) from))
-	 (tail list))
-    (while (setq tail (cdr tail))
-      (setcar tail (setq from (1+ from))))
-    list))
+If TO is less than FROM, the value is nil.
+Note that FROM, TO and INC can be integer or float."
+  (if (not to)
+      (list from)
+    (or inc (setq inc 1))
+    (let (seq)
+      (while (<= from to)
+	(setq seq (cons from seq)
+	      from (+ from inc)))
+      (nreverse seq))))
 
 (defun remove (elt seq)
   "Return a copy of SEQ with all occurrences of ELT removed.