Arrows in functional programming

Arrows in functional programming

In computer science, arrows provide a more general interface to computation than monads. Monads essentially provide a sequential interface to computation: one can build a computation out of a value, or sequence two computations together. Arrows provide more possibilities, including expressing (true, nondeterministic) parallel computation. Indeed, all monads in Haskell are instances of arrows of a particular kind, ArrowApply. Because arrows carry more type information than just the result type, composition can be more efficient — for example, eliminating space leaks.

Arrows have found use in functional reactive programming.

External links

* [http://www.haskell.org/arrows Arrows: A General Interface to Computation]
* “Generalising Monads to Arrows”, John Hughes, in Science of Computer Programming 37, pp67–111, May 2000.
* [http://www.soi.city.ac.uk/~ross/papers/notation.html A New Notation for Arrows] , Ross Paterson, in ICFP, Sep 2001.
* [http://www.soi.city.ac.uk/~ross/papers/fop.html Arrows and Computation] , Ross Paterson, in The Fun of Programming, Palgrave, 2003.
* [http://www.haskell.org/ghc/docs/latest/html/users_guide/arrow-notation.html Arrow notation] ghc manual


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Monad (functional programming) — In functional programming, a monad is a programming structure that represents computations. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. A defined monad allows the… …   Wikipedia

  • Reactive programming — is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model …   Wikipedia

  • Arrow (disambiguation) — An arrow is a projectile launched from a bow.Arrow may also refer to:→ symbolArrow (symbol), e.g. →, indicating direction or movement, including: * →, representing a vector in physics and mathematics. * →, representing a material implication in… …   Wikipedia

  • WxHaskell — is a portable and native GUI library for Haskell, built on wxWidgets. It is often used by those wanting to develop a GUI with a functional language. Applications High level GUI libraries built on top of wxHaskell As a comparison shows [Haskell… …   Wikipedia

  • Fleches dans la programmation fonctionnelle — Flèches dans la programmation fonctionnelle En informatique les flèches fournissent une interface plus générale au calcul que les monades. Les monades fournissent une interface séquentielle au calcul ; on peut construire un calcul à partir d …   Wikipédia en Français

  • Flèches Dans La Programmation Fonctionnelle — En informatique les flèches fournissent une interface plus générale au calcul que les monades. Les monades fournissent une interface séquentielle au calcul ; on peut construire un calcul à partir d une valeur, ou séquencer deux calculs. Les… …   Wikipédia en Français

  • Flèches dans la programmation fonctionnelle — En informatique les flèches fournissent une interface plus générale au calcul que les monades. Les monades fournissent une interface séquentielle au calcul ; on peut construire un calcul à partir d une valeur, ou séquencer deux calculs. Les… …   Wikipédia en Français

  • Monad (category theory) — For the uses of monads in computer software, see monads in functional programming. In category theory, a branch of mathematics, a monad, Kleisli triple, or triple is an (endo )functor, together with two natural transformations. Monads are used in …   Wikipedia

  • Type polymorphism — In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions. A function… …   Wikipedia

  • Haskell — Класс языка: функциональный, ленивый, модульный Тип исполнения: компилируемый, интерпретируемый Появился в: 1990 …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”