Arrows
Arrows are a type of category-theoretic structure.
They have many applications when used as an interface within functional programming languages, akin to those of monads.
Categorically
See the nLab page
In functional programming
In Haskell, the type class of arrows is defined by
class Arrow a where
arr :: (b -> c) -> a b c
(>>>) :: a b c -> a c d -> a b d
first :: a b c -> a (b, d) (c, d)
References
-
Arrows were introduced by John Hughes in
@article{hughes_2000,
title = {Generalising monads to arrows},
volume = {37},
doi = {10.1016/S0167-6423(99)00023-4},
number = {1-3},
journal = {Science of Computer Programming},
author = {Hughes, John},
year = {2000},
pages = {67--111}
}