Arrows for "deep application"
This library provides a framework for type-directed composition of value editors (non-syntactic transformations). The tools enable "deep function application" in two senses: deep application of functions and application of deep functions. These tools generalize beyond values and functions, via the DeepArrow
subclass of the Arrow
type class.
For more information see:
The project wiki page http://haskell.org/haskellwiki/DeepArrow
Application of deep arrows for composable interfaces in the TV library: http://haskell.org/haskellwiki/TV
The motivating idea and paper "Tangible Functional Programming": http://conal.net/papers/Eros
The primary module is Control.Arrow.DeepArrow
. Examples in Control.Arrow.DeepArrow.Examples
.
Note: Many of the type signatures use infix type operators (as in a~>b
). In reading the documentation and code, be aware that infix operators bind more tightly than ->
.
© 2007-2012 by Conal Elliott (http://conal.net); BSD3 license.