Encounter order: take 2

Paul Sandoz paul.sandoz at oracle.com
Thu Jan 31 14:42:19 PST 2013


On Jan 31, 2013, at 2:20 PM, Tim Peierls <tim at peierls.net> wrote:

> On Thu, Jan 31, 2013 at 6:50 AM, Paul Sandoz <paul.sandoz at oracle.com> wrote:
> An intermediate operation must preserve encounter order of output stream if:
> 
> a.1) the input stream to the intermediate operation has encounter order (either because the stream source has encounter order or because a previous intermediate operation injects encounter order); and
> a.2) the terminal operation preserves encounter order.
> 
> An intermediate operation may not preserve encounter order of the output stream if:
> 
> b.1) the input stream to the intermediate operation does not have encounter order (either because the stream source does not have encounter order or because a previous intermediate operation clears encounter order); or
> b.2) the terminal operation does not preserve encounter order *and* the intermediate operation is in a sequence of operations, to be computed, where the last operation in the sequence is the terminal operation and all operations in the sequence are computed in parallel.
> 
> Shouldn't a1 && a2 == !(b1 || b2) ? The extra condition in b2 isn't reflected in the a side.
> 

Well spotted finding the hole. I think it may be easier to state something like:

--

An intermediate operation must preserve encounter order of the output stream unless one of the following conditions is true, which if so the intermediate operation may not preserve encounter order:

1) the input stream to the intermediate operation does not have encounter order (either because the stream source does not have encounter order or because a previous intermediate operation clears encounter order).

2) the terminal operation does not preserve encounter order *and* the intermediate operation is in a sequence of operations, to be computed, where the last operation in the sequence is the terminal operation and all operations in the sequence are computed in parallel.

--

Paul.


More information about the lambda-libs-spec-observers mailing list