diff --git a/collects/scheme/private/list.ss b/collects/scheme/private/list.ss index a5202a47f8..bd3dc7565c 100644 --- a/collects/scheme/private/list.ss +++ b/collects/scheme/private/list.ss @@ -225,13 +225,10 @@ (unless (and (procedure? fcn) (procedure-arity-includes? fcn 1)) (raise-type-error 'build-list "procedure (arity 1)" fcn)) - (if (zero? n) - '() - (let loop ([i 0] [a null]) - (if (= i n) - (reverse a) - (loop (add1 i) - (cons (fcn i) a)))))) + (let recr ([j 0] [i n]) + (cond [(zero? i) null] + [else (cons (fcn j) + (recr (add1 j) (sub1 i)))]))) (define compose (case-lambda