python チュートリアル確認 (2)

何してる、と言いつつ reduce 作ってみる。

"reduce(func, sequence)" は単一の値を返します。この値は 2 つの引数をとる関数 func をシーケンス sequence の最初の二つの要素を引数として呼び出し、次にその結果とシーケンスの次の要素を引数にとり、以降これを繰り返すことで構成します。

5.1.3 実用的なプログラミングツールより引用
これはこれは、と言いつつ適当に作成

(define (reduce func seq)
  (define (inner-reduce ret seq)
    (if (null? seq)
	ret
	(inner-reduce (func ret (car seq)) (cdr seq)))
    )
  (inner-reduce (car seq) (cdr seq))
  )

これでデキ上がり、でいいんじゃないかな (何
一応試験

gosh> (reduce + (range 1 11))
55
gosh> (reduce + '(1))
1
gosh> 

(reduce + '()) の考慮はしてませんがスルー。