These libraries came from Eros, which aims at creating a right-brain-friendly (concrete, non-linguistic) “programming” process. 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 is 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
Although these libraries came from Eros, I’d like to see other applications as well.
Where am I going with library development?
- Figure out how to support simple GUIs and Eros’s gesturally composable GUIs, without code/library replication.
- Re-implement Eros on top of simpler pieces.
- Refactor Pajama into reusable libraries and release.
- Building and optimizing “expressions”
- Common sub-expression elimination
- Generation of Java code
- Perhaps other back-ends besides Java
- Pajama, on top of these pieces
Edit of March 5, 2007: TV is now split into a core TV package, with no GUI functionality, and GuiTV, with Phooey-based GUI creation. The reason for the split is that Phooey depends on wxHaskell, which can be difficult to install.