Tangible Functional Programming

ICFP '07

Conal Elliott

Abstract

We present a user-friendly approach to unifying program creation and execution, based on a notion of “tangible values” (TVs), which are visual and interactive manifestations of pure values, including functions. Programming happens by gestural composition of TVs. Our goal is to give end-users the ability to create parameterized, composable content without imposing the usual abstract and linguistic working style of programmers. We hope that such a system will put the essence of programming into the hands of many more people, and in particular people with artistic/visual creative style.

In realizing this vision, we develop algebras for visual presentation and for “deep” function application, where function and argument may both be nested within a structure of tuples, functions, etc. Composition gestures are translated into chains of combinators that act simultaneously on statically typed values and their visualizations.

Paper (426K PDF)

ICFP talk slides (408K PDF)

See also the video Tangible Functional Programming: a modern marriage of usability and composability.

Figures

Here are two figures from the paper, showing stages of an interactively composed interactive 2D region.  The user selects compatibly-typed input and output widgets, typically in different TVs. The result is a new TV that merges the source TVs, except for the connected input and output, which vanish. The sliders control the disk and checker sizes and the checker's rotation angle.

 

Errata

The conference proceedings printed version has some errors (corrected in the latest version):

BibTeX

@InProceedings{Elliott2007:Eros,
  author       = {Conal Elliott},
  title        = {Tangible Functional Programming},
  url          = {http://conal.net/papers/Eros/},
  booktitle    = "International Conference on Functional Programming",
  year         = 2007
}

See also

Edit History