On Tuesday, 13 May 2014 at 17:32:21 UTC, H. S. Teoh via Digitalmars-d wrote:
Lastly, since the range API is an *abstraction*, it should not dictate any concrete implementation details such as whether .empty can do non-trivial initialization work. Properly-written range-based code should be able to handle all possible implementations of the range API,
including those that do non-trivial work in .empty.

An API is a "user" interface. It should be intuitive.

Besides, D ranges will never perform as well as an optimized explicit loop, so you might as well aim for usability over speed. I learned this over 15 years ago when I was fed up with STL begin/end and implemented my own inlined iterators that work like D ranges ( for a scanline renderer ).

Reply via email to