繰り返し処理の実装

>(for-each (lambda (x) (newline) (display x))
(list 1 2 3 4 5)
)

1
2
3
4
5
>

上の例のように5つくらいならリストを作れるが、数が増えるとたいへんになる。任意の数に拡張したい。他の書き方はないか?例えば下のように書く。

> (define (func n)
(if (> n 1)
(begin
(display n)
(newline)
(func (- n 1)))
(display 1)
))
func

> (func 5)
5
4
3
2
1
>