Pythonでunfold

foldに似たreduceがあるなら、unfoldに似た関数があってもいいじゃない。

def unreduce(f,x):
    y = f(x)
    while y != None:
        yield y[0]
        y = f(y[1])

これで整数を各桁ごとに分解するコードが簡単に書けちゃうよ。

base = 10 # 10進数にしたときの各桁に分解する
for x in unreduce(lambda m: None if m <= 0 else (m % base, m / base ) ,n):
    print x