* srfi-1.scm (list-tabulate): Do not go into infinite loop for
authorMartin Grabmüller <mgrabmue@cs.tu-berlin.de>
Tue, 3 Jul 2001 16:19:23 +0000 (16:19 +0000)
committerMartin Grabmüller <mgrabmue@cs.tu-berlin.de>
Tue, 3 Jul 2001 16:19:23 +0000 (16:19 +0000)
invalid arguments.  Same fix for several other procedures (do not
use zero?, use <= 0).

srfi/ChangeLog
srfi/srfi-1.scm

index d67d358..870478d 100644 (file)
@@ -1,7 +1,8 @@
 2001-07-03  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
 
        * srfi-1.scm (list-tabulate): Do not go into infinite loop for
-       invalid arguments.
+       invalid arguments.  Same fix for several other procedures (do not
+       use zero?, use <= 0).
 
 2001-07-02  Martin Grabmueller  <mgrabmue@cs.tu-berlin.de>
 
index 34f7173..45d5585 100644 (file)
 
 (define (take x i)
   (let lp ((n i) (l x) (acc '()))
-    (if (zero? n)
+    (if (<= n 0)
       (reverse! acc)
       (lp (- n 1) (cdr l) (cons (car l) acc)))))
 (define (drop x i)
   (let lp ((n i) (l x))
-    (if (zero? n)
+    (if (<= n 0)
       l
       (lp (- n 1) (cdr l)))))
 (define (take-right flist i)
   (let lp ((n i) (l flist))
-    (if (zero? n)
+    (if (<= n 0)
       (let lp0 ((s flist) (l l))
        (if (null? l)
          s
   
 (define (drop-right flist i)
   (let lp ((n i) (l flist))
-    (if (zero? n)
+    (if (<= n 0)
       (let lp0 ((s flist) (l l) (acc '()))
        (if (null? l)
          (reverse! acc)
       (lp (- n 1) (cdr l)))))
 
 (define (take! x i)
-  (if (zero? i)
+  (if (<= i 0)
     '()
     (let lp ((n (- i 1)) (l x))
-      (if (zero? n)
+      (if (<= n 0)
        (begin 
          (set-cdr! l '())
          x)
        (lp (- n 1) (cdr l))))))
 
 (define (drop-right! flist i)
-  (if (zero? i)
+  (if (<= i 0)
     flist
     (let lp ((n (+ i 1)) (l flist))
-      (if (zero? n)
+      (if (<= n 0)
        (let lp0 ((s flist) (l l))
          (if (null? l)
            (begin
 
 (define (split-at x i)
   (let lp ((l x) (n i) (acc '()))
-    (if (zero? n)
+    (if (<= n 0)
       (values (reverse! acc) l)
       (lp (cdr l) (- n 1) (cons (car l) acc)))))
 
 (define (split-at! x i)
-  (if (zero? i)
+  (if (<= i 0)
     (values '() x)
     (let lp ((l x) (n (- i 1)))
-      (if (zero? n)
+      (if (<= n 0)
        (let ((tmp (cdr l)))
          (set-cdr! l '())
          (values x tmp))