On Tue, Oct 12, 2010 at 8:56 AM, Uwe Schmidt <uwe@fh-wedel.de> wrote:
>> No, but there is no point in using a formalism that adds complexity
>> without adding functionality. Arrows are more awkward to use than
>> monads because they were intentionally designed to be less powerful than
>> monads in order to cover situations in which one could not use a monad.
Essentially, arrows lend themselves best to composing first-order
computations to create larger computations with a fixed structure. If
you find yourself forced to frequently use ArrowApply or other means
of eliminating higher-order structure--e.g., anything that results in
an arrow with an output type that contains fewer instances of the
arrow's own type constructor than does the input type--it may be worth
considering if arrows are really what you want to use.
Personally, though, I think monads are really overkill in many cases
and strongly prefer, where possible, to use Applicative or Arrow.