PLS Lab

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

Hughes, John. 2000. ‘Generalising Monads to Arrows’. Science of Computer Programming 37 (1–3): 67–111. https://doi.org/10.1016/S0167-6423(99)00023-4. pdf
@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}
}