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