Arrows are a formulation within
which can be both monads (See
To quote from the introduction there:
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 arrow.
, in Science of Computer Programming 37, pp67-111, May 2000.
The applications include
, see for example:
and implementation in
of this page (last edited
July 9, 2010
with title or text search