diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index edf06ceac..65eb43b2b 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -2802,8 +2802,10 @@ ;;; {IOTA functions: generating lists of numbers} -(define (reverse-iota n) (if (> n 0) (cons (1- n) (reverse-iota (1- n))) '())) -(define (iota n) (reverse! (reverse-iota n))) +(define (iota n) + (let loop ((count (1- n)) (result '())) + (if (< count 0) result + (loop (1- count) (cons count result))))) ;;; {While}