Does D have too many features?

Kapps opantm2+spam at gmail.com
Mon Apr 30 15:54:23 PDT 2012


On Monday, 30 April 2012 at 19:50:36 UTC, Walter Bright wrote:
>
> I'm surprised nobody has mentioned opApply. That was a good 
> idea at the time, but Ranges are a superior solution. I'd like 
> to see new code not use opApply. It's a dead end, though it'll 
> still be supported for a long time.

I practically never use ranges, and instead use opApply for all 
my code.

1) Ranges force me to use a specific naming convention. My naming 
convention that I use for my projects is upper camel case. Ranges 
do not allow this. Technically opApply is still lower camel case, 
but my code doesn't directly call it.

2) Ranges don't have a way of determining when the iteration 
ends. Sometimes you want to do something once iteration stops. 
For example, by far the most common action when executing a 
database call for me, is to iterate over it and close it. I can 
then have a helper method that executes the command and closes it 
when the foreach is done (whether by break or by the function 
ending). This saves quite a bit of boiler plate code.

3) Ranges can be difficult to implement. You now have to keep 
track of state instead of simply leaving everything inside a 
single method call. This can also cause significant problems with 
multi-threaded code.

4) Ranges take a lot more code, which when all you want is basic 
iteration, is pointless to have.

I'd much rather just see things with opApply being able to have a 
forward-range magically created for it, much like the reverse. 
Not sure if this is possible or practical though.




More information about the Digitalmars-d mailing list