On 9/30/2015 10:47 PM, Eric Niebler wrote:
P.S. I see lots of people here assuming that C++ is playing catch-up to D
because D has ranges and C++ doesn't yet. That is ignoring the long history of
ranges in C++. C++ got ranges in the form of the Boost.Range library by Thorsten
Ottoson sometime in the early 00's. Andrei didn't implement D's ranges until
many years after. The ranges idea is older than dirt. It's not a D invention.

Range iteration over arrays have been around in D since the beginning
and a more general proposal first appears here:

http://www.digitalmars.com/d/archives//12773.html

and Matthew Wilson did his range library for D in 9/2004 (and one for C++, too). He said he was going to propose it for Boost, I don't know if he ever did. It does appear in his "Imperfect C++" book. Matthew, a bit to my frustration, would always implement the D ideas first for C++ :-) but I don't think they garnered any attention from the C++ community.

news://news.digitalmars.com/rangelib

Here's something I wrote to Matthew in Feb 2004:

"I think ranges in D are the same thing as slices. C++ doesn't have slices,
so ranges makes sense as a distinct object. In D, slices over a collection
or array simply yield a subset collection or subset array, not a separate
object, so I'm not sure what value they would add to D."

I found a link to Thorsten's Boost range:

http://www.boost.org/doc/libs/1_34_0/libs/range/doc/intro.html
http://www.boost.org/doc/libs/1_34_0/libs/range/doc/range.html

It returns an iterator, so I don't think it is what we'd consider a range to be today.

Matthew's ranges had the following members:

    current
    advance
    is_open

corresponding to front, popFront, and empty.

So I'd say given what I can dig up, that D's ranges were more advanced than Boost's were at the time.

Sadly, Matthew's work seems to have disappeared from the internets and his web sites have vanished (rangelib.org).

Update: found it on web.archive.org!

https://web.archive.org/web/20050427085507/http://rangelib.synesis.com.au/

Anyhow, this is what I could dig up in an hour or so.

Reply via email to