BinaryOperator

BinaryOperator is the base trait for stages that run two sub-stages on the same input type I: it declares the left and right members.

BaseBinaryOperator[-I, +LO, +RO, +O, +E] is a type alias for the common case where both sub-stages share the same input and error type but may have different output types. BaseBinaryOperator.Evolution is a companion base Evolution that pairs two sub-evolutions, delegating evolve to both and disposing them exception-safely: right.dispose() is called first; if it throws, left.dispose() is still attempted and any additional exception is attached as a suppressed exception to the first.

Concrete operators such as And, Or, and IAnd extend BinaryOperator and implement apply to decide how the results of the two sides are combined.