Arrows are a new abstract view of computation, defined by John Hughes [Hug00]. They serve much the
same purpose as monads -- providing a common structure for libraries -- but are more general. In
particular they allow notions of computation that may be partially static (independent of the input)
or may take multiple inputs. If your application works fine with monads, you might as well stick
with them. But if you're using a structure that's very like a monad, but isn't one, maybe it's an
These details are provided for information only. No information here is legal advice and should not be used as such.