Tangible Functional Programming: a modern marriage of usability and composability

Earlier this month I gave a tech talk at Google, entitled “Tangible Functional Programming: a modern marriage of usability and composability”. Thanks to Google folks, the talk is now up on YouTube. I showed a way make functional programming “tangible” and visual, rather than abstract and syntactic and, in doing so, to fulfill the original Unix vision of simple, composable apps.

The key is to keep an app’s interface and functionality combined and separable. Combined yields usability, and separable yields composability. This principle applies not only to GUI-style interfaces, but to textual IO as well, and it applies to both direct composition and syntactic composition. See the TV page for examples of the latter. The common practice of mixing IO with functionality inhibits composability whether in C or in Haskell.



  1. falcon:

    I saw the talk earlier today, it was very nice! I wish you had talked more about the actual code. I’ve read you paper a few times but didn’t understand the basic idea until I saw the talk.

  2. daryoush:

    This presentation was great. In the google talk there are slides about MVC and bunch of slides that you skip over. Is it possible to post those slides as well? The pdf files that is on the link seems to be missing those slides. MVC is only mentioned in the “to explore” slide.



  3. conal:

    Hi Daryoush. Thanks for the feedback! You can get the tech-talk slides here. Enjoy.

  4. Conal Elliott » Blog Archive » Can functional programming be liberated from the von Neumann paradigm?:

    […] (Sadly, the very definition of “program” in Haskell requires that there be a main of type IO ()! Haskell programs thus cannot be purely functional (except technically), and so cannot be composed except very weakly, as Backus describes. For an alternative model, see Tangible Functional Programming: a modern marriage of usability and composability.) […]

  5. Noel:

    Conal, is it possible to get Eros somewhere? I found the wiki, but the download link there doesn’t work.

  6. conal:

    Noel – I doubt Eros would work right now, as it depends on some bit-rotten libraries. I’m working my way back around to it via automatic generation of GPU code. The situation with cross-platform GUI libraries in Haskell is a problem for me right now. Since I’m mainly on a Mac these days, I want to use something Mac-friendly, unlike the current gtk2hs (especially since I need OpenGL in my GUIs). And because I like interactive development and denotative/functional design, my experiments are often one-liners, I want something ghci-friendly, unlike the current wxHaskell.

Leave a comment