app package:rhine

Some arrows allow application of arrow inputs to other inputs. Instances should satisfy the following laws: Such arrows are equivalent to monads (see ArrowMonad).
Any instance of ArrowApply can be made into an instance of ArrowChoice by defining left = leftApp.
Like accumulateWith, with mappend as the accumulation function.
Like mappendFrom, initialised at mempty.