python チュートリアル確認

python ってタグ付けてるのに scheme に走る不届きモノ。
参考にしているのはPython チュートリアルなんですが、5.1.3 実用的なプログラミングツールの項を見ててタマラなくなり現実トウヒ (何
range という手続きについて、最初こんなのが出てきた

(define (range s e)
  (if (>= s e)
      '()
      (cons s (range (+ s 1) e))))

scheme 的には直截。あるいは末尾呼び出しなソレが以下

(define (range s e)
  (define (inner-range n ret)
    (if (>= n e)
	ret
	(inner-range (+ n 1) (append ret (list n))))
    )
  (inner-range s '()))

資料を見るに from なソレが省略可能らしい。

(define (range s . e)
  (cond ((null? e) (range 0 s))
	((>= s (car e)) '())
	(else
	 (cons s (range (+ s 1) (car e))))))

最初、面倒なので s と e を逆にしてたのですがこれはこれで微妙。最終的に上記で落ち着いています。3 番目以降の引数は無視。
本当は reduce という手続きなソレがメインだったのですが時間切れ