You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The behaviour of StopTraversal is not consistent in send, nested or parallel execution. The described purpose is
Stop the traversal of a path, with either
[1] No return value
[2] a final return value
Processing multiple sub-chains in chains fails to do [2], treating early return values as regular ones. A bundle behaves similarly.
A bare send will retry indefinitely in case of [1], until either a result is produced (regularly or via [2]) or StopIteration. This easily creates an infinite loop for inappropriate input, or non-defensive chains.
The text was updated successfully, but these errors were encountered:
The major problem is consistently applying [2] in nested structures. This may require splitting the result list into active and final values. No idea for a consistent design that does not require chainlets to be aware of the split.
The behaviour of [1] could be adjusted for consistency with send: Breaking a flat chain should be consistent with a bare yield, producing None. This implies that breaking a forking chain produces an empty iterable, i.e. () or []. A StopIteration is not caught.
The behaviour of
StopTraversal
is not consistent insend
, nested or parallel execution. The described purpose isProcessing multiple sub-chains in chains fails to do [2], treating early return values as regular ones. A bundle behaves similarly.
A bare
send
will retry indefinitely in case of [1], until either a result is produced (regularly or via [2]) orStopIteration
. This easily creates an infinite loop for inappropriate input, or non-defensive chains.The text was updated successfully, but these errors were encountered: