Interesting talk on Python vs. Ruby and how he would like Python to have just a bit more syntactic flexibility.
Anh Hai Trinh
anh.hai.trinh at gmail.com
Fri Feb 19 05:01:53 EST 2010
On Feb 19, 1:44 pm, Steve Howell <showel... at yahoo.com> wrote:
>
> > def coroutine(co):
> > def _inner(*args, **kwargs):
> > gen = co(*args, **kwargs)
> > gen.next()
> > return gen
> > return _inner
>
> > def squares_and_cubes(lst, target):
> > for n in lst:
> > target.send((n * n, n * n * n))
>
> > @coroutine
> > def reject_bad_values(target):
> > while True:
> > square, cube = (yield)
> > if not (square == 25 or cube == 64):
> > target.send((square, cube))
>
> > @coroutine
> > def cubes_only(target):
> > while True:
> > square, cube = (yield)
> > target.send(cube)
>
> > @coroutine
> > def print_results():
> > while True:
> > print (yield)
>
> > squares_and_cubes(range(10),
> > reject_bad_values(
> > cubes_only(
> > print_results()
> > )
> > )
> > )
>
> Wow! It took me a while to get my head around it, but that's pretty
> cool.
This pipeline idea has actually been implemented further, see <http://
blog.onideas.ws/stream.py>.
from stream import map, filter, cut
range(10) >> map(lambda x: [x**2, x**3]) >> filter(lambda t: t[0]!
=25 and t[1]!=64) >> cut[1] >> list
[0, 1, 8, 27, 216, 343, 512, 729]
--
aht
More information about the Python-list
mailing list