def fizz(s):
for i in s: yield (i%3 == 0) and 'fizz' or '', i
def buzz(s):
for i in s:
yield (i[1] % 5 == 0) and (i[0] + 'buzz') or i[0] or str(i[1])
def compose(a,b): return lambda *args: a(b(*args))
q = compose(fizz, range)
r = compose("\n".join, buzz)
print compose(r,q)(1,101)