Lots of low hanging fruit in Phobos

Nick Sabalausky SeeWebsiteToContactMe at semitwist.com
Sat Mar 8 15:23:05 PST 2014


On 3/8/2014 5:58 PM, Piotr Szturmaj wrote:
> W dniu 2014-03-08 02:09, H. S. Teoh pisze:
>> Having a way to auto-generate input range boilerplate, though, would be
>> really, *really* nice. Coroutine-style code would be ideal.
>
> https://github.com/pszturmaj/dgenerators

Yea, there is that approach, which is nice in certain ways. I did the 
same kinda thing a couple years ago[1], but your API appears much, much 
nicer.

The unfortunate downside, though, is that as jerro demonstrated[2] 
there's a high overhead when using fibers for iteration. It likely 
wouldn't be an issue for some things, like IO, but for other things it 
could be a problem.

So what we end up with is an unfortunate three-way choice anytime 
someone needs a generator in D:

1. Give up on range compatibility (opApply)
2. Give up on straightforward implementation (input/forward range)
3. Give up on maximum performance (fiber-based coroutine range)

D's just dancing all around the ideal solution for generators without 
ever actually hitting the mark. Which I find frustrating because I know 
that's a target D's capable of nailing.

[1] 
http://semitwist.com/articles/article/view/combine-coroutines-and-input-ranges-for-dead-simple-d-iteration

[2] http://forum.dlang.org/thread/jno6o5$qtb$1@digitalmars.com



More information about the Digitalmars-d mailing list