Difference between revisions of "Arrow"

From HaskellWiki
Jump to navigation Jump to search
(Better structure and more links)
((1) →‎Library: : a) the standard library Control.Arrow b) and also an extension, too. (2) →‎Examples: introductory text)
Line 12: Line 12:
   
 
See also [[Research papers/Monads and arrows]].
 
See also [[Research papers/Monads and arrows]].
  +
  +
== Library ==
  +
  +
[http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Arrow.html Control.Arrow] is the standard ibrary for arrows.
  +
  +
[http://www.haskell.org/arrows/download.html#bottom Arrow transformer library] (see the bottom of the page) is an extension with arrow transformers, subclasses, useful data types (Data.Stream, Data.Sequence).
   
 
== Examples ==
 
== Examples ==
  +
  +
Various concepts follow here, which can be seen as concrete examples covered by the arrow concept. Not all of them provide links to Haskell-related materials: some of them are here only to give a self-contaned material (e.g. section [[#Automaton]] gives links only to the finite state concept itself.).
   
 
=== Parser ===
 
=== Parser ===

Revision as of 17:44, 11 June 2006

Arrow class (base)
import Control.Arrow

Introduction

Arrows: A General Interface to Computation written by Ross Peterson.

HaWiki's UnderstandingArrows.

Monad.Reader's ArrowsIntroduction article.

See also Research papers/Monads and arrows.

Library

Control.Arrow is the standard ibrary for arrows.

Arrow transformer library (see the bottom of the page) is an extension with arrow transformers, subclasses, useful data types (Data.Stream, Data.Sequence).

Examples

Various concepts follow here, which can be seen as concrete examples covered by the arrow concept. Not all of them provide links to Haskell-related materials: some of them are here only to give a self-contaned material (e.g. section #Automaton gives links only to the finite state concept itself.).

Parser

The reasons why the arrow concept can solve important questions when designing a parser library are explained in Generalising Monads to Arrows written by John Hughes.

A good example of the mentioned arrow parsers can be seen in A New Notation for Arrows written by Ross Peterson: figure 2, 4, 6 (page 3, 5, 6).

An implementation: PArrows written by Einar Karttunen.

Stream processor

The Lazy K programming language is an interesing esoteric language (from the family purely functional languages), whose I/O concept is approached by streams.

Functional I/O, graphical user interfaces

On the Expressiveness of Purely Functional I/O Systems written by Paul Hudak and Raman S. Sundaresh.

Fudgets written by Thomas Hallgren and Magnus Carlsson.

Dataflow languages

Arrows and Computation written by Ross Paterson mentions how to mimick dataflow programming in (lazy) functional languages. See more on Lucid's own HaskellWiki page: Lucid.