Eros

From HaskellWiki
Revision as of 04:55, 10 September 2007 by Conal (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Eros enables higher-order functional programming via a visual, non-syntactic interface. Every component (basic value or function) is presented as a GUI-style visualization. In the case of functions, the visualizations are interaction, allowing the user/author to explore the domain and see corresponding range values. A value (usually function) and its visualization together form what I call a "tangible value" or "TV".

Programming happens through "gestural composition" of TVs. A user selects compatibly-typed input and output widgets, typically in different GUIs. The result is a fusion of the two TVs and their underlying, containing all of the original inputs and outputs except for the connected input and output. Higher-order programming is fully supported.

One application I have in mind for Eros is to be a more powerful kind of Photoshop/GIMP-like tool. In Photoshop or the GIMP, programmers create filters and user apply filters to make images. With Eros, the user can just as easily create new filters, and indeed there is no distinction between filters and users except that "images" happens not to be parameterized. Thus, the artist becomes a tool-maker, not just a tool-user.

I'm working hard toward releasing Eros. The first implementation was way more complicated than I'm comfortable with, so I started over on another implementation, built up from parts. Those parts include TypeCompose, DeepArrow, DataDriven, Phooey, and TV. I'm much happier with the new Eros implementation and will release a first version soon.

Meanwhile please check out the paper "Tangible Functional Programming" (ICFP 2007).