New Article: My Experience Porting Python Dateutil's Date Parser to D
Ola Fosheim Grøstad via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Thu Mar 10 11:54:07 PST 2016
On Thursday, 10 March 2016 at 17:59:21 UTC, Chris Wright wrote:
> It's a little easier to write iterators in the Python style:
> you don't have to cache the current value, and you don't have
> to have a separate check for end-of-iteration. It's a little
> easier to use them in the D style: you get more flexibility,
> can check for emptiness without popping an item, and can grab
> the first item several times.
I don't have any firm opinions on this, but escaping out of the
loop with an exception means you don't have to check for
emptiness. So I am not sure why D range-iterators should be
considered easier.
> You can convert one to the other, so there's no theoretical
> difference in what you can accomplish with them. It's mainly
> annoying. A small efficiency concern, because throwing
> exceptions is a little slow.
Efficiency of exceptions in Python is an implementation issue,
though. But I agree that the difference isn't all that
interesting.
> The largest practical difference comes when multiple functions
> are interested in viewing the first item in the same range.
> LL(1) parsers need to do this.
Iterators and generators in Python are mostly for for-loops and
comprehensions. In the rare case where you want lookahead you can
just write your own or use an adapter.
> Of course, that's just looking at input ranges versus
> iterators. If you look at other types of ranges, there's a lot
> there that Python is missing.
Is there any work done on range-iterators and streams?
More information about the Digitalmars-d-announce
mailing list