…昨日書いたreduceYieldにバグがあると思うんだが、どういう挙動にしたものやらわからない。
…んー。

for ii in reduceYield( range(5), lambda x,y: x+y): print ii

としたときに
1
3
6
10
と返ってくるんだけど、一周目の0が返ってきてほしいんだよね。
0
1
3
6
10
となって欲しい。

追記

解決した模様。

def reduceYield(list,fn,start=None):
    for ii in list:
        if start==None:
            start = ii
            yield ii
        else:
            start = fn(start,ii)
            yield start

なんで最初の一周目のが欲しかったかって言うと、

initializer が与えられて おらず、sequence が単一の要素しか持っていない場合、 最初の要素が返されます。

とか書いてあったからなのさ。