Rust switches to external iteration
bearophile
bearophileHUGS at lycos.com
Thu Jul 4 11:27:14 PDT 2013
Jonathan M Davis:
> And given how useless pure input ranges are, I really don't see
> much value in
> that. About all they give you is the ability to iterate over a
> set of values
> once. The other range types are _far_ more powerful, and pure
> input ranges
> should be avoided as much as possible IMHO.
Python generators are essentially input ranges, you can go only
forward, and they yield their results only once:
>>> g = (i ** 2 for i in xrange(5))
>>> list(g)
[0, 1, 4, 9, 16]
>>> list(g)
[]
>>> def gen():
... for i in xrange(5):
... yield i * i
...
>>> g = gen()
>>> list(g)
[0, 1, 4, 9, 16]
>>> list(g)
[]
Yet in Python they are used everywhere. I define input ranges
often in D and I think they are useful.
Having a built-in "yield" in a language is quite handy. Take a
look at the Python and the second D solutions here:
http://rosettacode.org/wiki/Same_Fringe
Bye,
bearophile
More information about the Digitalmars-d
mailing list