# DeepArrow

### From HaskellWiki

The **DeepArrow** library is a framework for composable "editors" of pure values.

- Read the Haddock docs (with source code & Comment/Talk links)
- Get the code:
`darcs get http://darcs.haskell.org/packages/DeepArrow`

## 1 Introduction

By an "editor", I mean a function that targets a transformation at some part of a value, such as the first half of the second half of a value of type(a,(b,c))

b -> b'

(a,(b,c)) -> (a,(b',c))

first

second

first

second

result

first

second

result

## 2 Examples

See examples in the library documentation.

## 3 Background

The inspiration for value-editing paths came while I was looking for a way for non-programmers to be able to create functional images. I've had a growing intuition over the last fifteen years that media authoring tools can be usefully looked at as environments for functional programming. I'd been wondering how to map a user's gestures into operations on a functional program. Lots of noodling led to ideas of composable interfaces and "tangible values" (term thanks to Sean Seefried) and gestural composition in Eros.

Eros was more complicated than I like, so I started splitting it into pieces:

- Phooey is a functional GUI library that has much of Eros's GUI implementation techniques, but much more carefully structured than in the Eros paper.
- DeepArrow has the general notion of "deep application".
- TV has the algebra of
*composable interfaces*, or visualizations of pure values, and it has*tangible values*, which are separable combinations of interface and value. It uses Phooey to generate GUIs very simply from interfaces.