Boost logo

Boost :

Subject: Re: [boost] Formal Review: Boost.RangeEx
From: Rogier van Dalen (rogiervd_at_[hidden])
Date: 2009-02-25 10:36:23


On Fri, 2009-02-20 at 13:28 +0100, Thorsten Ottosen wrote:
> Dear Developers and Users,
>
> It's my pleasure to announce that the review of Neil Groves' RangeEx
> library starts today and lasts until March 3, 2009.

That's great news! I've much anticipated this library, since I'd
hand-rolled similar components a long time ago. I hope to submit a
formal review, but before I do, I hope to understand the motivation for
the design better. I hope this is allowed within a formal review. This
is related to my question at
<http://lists.boost.org/Archives/boost/2008/07/140514.php>.

I am not sure I understand the motivation for the operator| syntax. Why
couldn't
        vec | boost::adaptors::reversed | boost::adaptors::unique
be written
        boost::adaptors::unique (boost::adaptors::reversed (vec))
? I think this contrast would be fairer than what the documentation
currently has. Is there a reason why it is not possible to provide both
syntaxes? The pipe syntax is nice, but sort of restricts operations to 1
range in, 1 range out. Relatedly:

I was hoping for more lazy views on ranges, especially after reading
that the library allows for a "seamless funtional-style programming".
Shouldn't there be a generated(), randomly_shuffled(), sorted(),
intersected(), merged(), etc.? (I implemented lazy set operations
implemented and I think it's quite possible.)

In short, I seem to see unexploited symmetries. Am I missing things?

Thanks for any replies,
Rogier


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk