A reference of operations organized by channel and effect Success Channel Maps the successful value Stays inside the carrier Sequences success path computations The mechanism for introducing new errors into a graded expected Enters a short circuit state if a predicate fails Observes the successful value transparently Intercepts success and forces a transition to a failure state Error Empty Channel Maps the error value Stays inside the carrier and is the one operation that can narrow a graded error set Graded expected exact error sets Sequences computations based on errors Joins recovery values Intercepts failure and forces a transition back to a success state Observes the error value transparently Supplies a fallback Member eliminates the carrier to return the value pipeline preserves the carrier returning it engaged with either its own value or the fallback Neutral Unconditionally evaluates the carrier discards the result and returns to signal that the return value is deliberately ignored Elimination Routes the stored state to an overload set leaving the algebra with an ordinary C value The same elimination keyed by an explicit state tag Composition & Combination conjunction Combines independent computations values into a errors as a union disjunction Combines alternative computations values into a disjoint sum errors as a product An n ary fold of over monadic carriers or over packs copacks and scalars not a mix of the two An n ary fold of over monadic carriers supporting total disjunction with the identity cluster Key Architectural Rules of the Map and are duals transitions success to failure and transitions failure to success Neither operation widens a graded error set Graded Widens the error grade by introducing new error types into the pipeline and Enter an existing short circuit state the carrier must already support the failure state Error side operations such as and Require a carrier with an error or empty side They are ill formed on and and remain vacuously well formed on The identity cluster libfn transform and_then filter inspect fail transform_error or_else recover inspect_error value_or value_or x fn value_or x discard void apply apply_type operator& pack operator| copack pack fn conjoin operator& fn disjoin operator| fail recover fail recover and_then filter fail transform_error or_else recover inspect_error just choice expected<T copack<>>