msum package:invertible

Fold a structure with >| (|<), thus always applying the input to the first (last) item for generation.
Try a list of monoidal actions in sequence, producing the index of the first successful action, and evaluating the action with the given index.
Fold a structure with >| (|<), thus always applying the input to the first (last) item for generation.