Boost logo

Boost Users :

Subject: Re: [Boost-users] [Range] Adaptors
From: Krzysztof Czainski (1czajnik_at_[hidden])
Date: 2011-01-06 09:26:59


2011/1/6 Robert Jones <robertgbjones_at_[hidden]>

> On Wed, Jan 5, 2011 at 5:13 PM, Dave Abrahams <dave_at_[hidden]> wrote:
>
>> At Wed, 5 Jan 2011 16:05:56 +0000,
>> Robert Jones wrote:
>> >
>> > I might be asking for the impossible here, but given the lovely adaptor
>> > syntax, eg
>> >
>> > std::vector<int> vec;
>> > boost::copy( vec | boost::adaptors::reversed
>> > | boost::adaptors::uniqued,
>> > std::ostream_iterator<int>(std::cout) );
>>
>
Lovley syntax indeed. I am new to it, and I like it.

> > I notice it still uses the function call notation in the outermost
>> > operation( boost::copy() ),
>> > can it be written to eliminate function call syntax completely, say
>> > something like
>> >
>> > vec | boost::adaptors::reversed | boost::adaptors::uniqued |
>> > boost::adaptors::copy( std::ostream_iterator<int>(std::cout) );
>> >
>> > or even
>> >
>> > vec | boost::adaptors::reversed | boost::adaptors::uniqued |
>> > std::ostream_iterator<int>(std::cout);
>>
>
+1

> It could be done, but it might not make much sense. The boost
>> adaptors are essentially lazy sequence transformations, but the copy
>> operation you're asking for has a completely different nature: it's
>> eager. If you still like that syntax, though, you could write a
>> suitable copy function of your own in about 40 lines that would do the
>> same job.
>>
>
> Yes.... I take your point about eager vs lazy, but on reflection is it not
> the case that almost any 'pipeline' of transformations has to end with
> 'eager' consumption?
>
> If I had
>
> int f( int );
>
> boost::for_each( vec | boost::adaptors::reversed |
> boost::adaptors::uniqued, f );
>
> and instead were able to write it as
>
> vec | boost::adaptors::reversed | boost::adaptors::uniqued | f;
>

+1

>
> the final use of operator|() seems to pretty much imply eagerness in the
> same way that the for_each() does.
>
> I'm not sure that it would be possible to implement it unambiguously tho'.
>
> - Rob.
>

Regards, Kris



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net