On Sat, Jan 31, 2009 at 2:20 AM, Brian Palmer <[email protected]> 
wrote:
> Last night I started playing with the idea of doing a partial back-port of 
> std.range to D 1.0. After hacking on it for a few hours, I came up with 
> something that, from the end-user's standpoint, is very similar. It only 
> works in the newest dmd and in ldc, because of the need for partial IFTI. For 
> instance, this example from the ddoc works without change:
>
> assert(equal(take(5, cycle([1, 2][])), [ 1, 2, 1, 2, 1 ][]));
>
> So far I've implemented take, drop, cycle, chain, map, filter, inPlace and 
> find. However implementing a Range is more difficult than in 2.0, and 
> performance suffers somewhat. There are two main reasons for this: no ref 
> functions (which I've always thought a bizarre oversight), and no foreach 
> range support. Both could be implemented in a backwards-compatible way for 
> 1.0, but as I understand it the official stance is only bug fixes in 1.0 
> going forward. So is there any chance at all of having these changes 
> implemented? Even if not, does this port interest anybody else? We aren't 
> really satisfied with the container/iterator libraries available for 1.0 so 
> we'll likely pursue this route.
>
> The git repo for the code isn't public yet, so I've uploaded a snapshot zip 
> for the curious and/or bored. Be warned, late-night hacky code ahead.
>
> http://www.codekitchen.net/ranges_and_algorithms.zip

It would be great if you would contribute this to the std2 project,
which is an effort to backport phobos2 to D1.
http://www.dsource.org/projects/std2

--bb

Reply via email to