generator tools in python :)
print=lambda g:{print(i) for i in g}
len=lambda g:sum(1 for i in g)
fork=lambda g,c=2:((i,)*c for i in g)
first=lambda g, cnt:(next(g) for i in range(cnt))
fork_every_other=lambda g:((v,None) if i%2 else (None,v) for i,v in enumerate(g))
run=lambda g:{i for i in g}
def unfork(g):
""" returns a generator with one output at a time if
multiple outputs are coming out of the given """
for i in g:
for x in i:
yield x
def fork(g,c=2):
""" fork a generator in python """
return ((i,)*c for i in g)
def multiple_ops(g, *f):
""" fork a generator with multiple operations being
ran on its values """
for i in g:
if len(f)>1:
yield tuple(func(i) for func in f)
else:
yield f[0](i)