ManipML: Towards Bimodal Tangible Functional Programming
Can live programming be augmented with direct manipulation on the live program values? The programmer might either text edit their code or use their mouse to manipulate live program values to modify their program. While such bimodal programming environments have been demonstrated for graphical domains, how to offer such a system for more generic programming remains an open question.
To explore this question, we take inspiration from Conal Elliot’s tangible functional programming system Eros, in which the user manipulates function values on a canvas to create new values by composition. While not bimodal, Eros demonstrated that functional programming might enable a non-linear editing style in which programs are constructed out of order rather than top-down.
To take initial steps towards non-linear tangible editing in a bimodal interface, we present ManipML, a text and direct manipulation interface for building simple OCaml programs. Running alongside a traditional text editor, ManipML displays a manipulable skeleton of the program structure, along with runtime values from an example execution. Drag-and-drop interactions enable insertion and replacement of code. We demonstrate ManipML’s workflow by constructing a function to perform natural number addition.
Tue 17 NovDisplayed time zone: Central Time (US & Canada) change
13:00 - 14:20
Full Talks IILIVE at SPLASH-VI
Chair(s): Roly Perera The Alan Turing Institute/University of Bristol
|Sketchable Interaction - End-User Customization via Interactive Regions|
Jürgen Hahn University of Regensburg, Raphael Wimmer University of RegensburgMedia Attached
|Data Theater: A Live Programming Environment for Prototyping Data-Driven Explorable Explanations|
Sam Lau University of California San Diego, Philip Guo University of California San DiegoMedia Attached
|ManipML: Towards Bimodal Tangible Functional Programming|
Brian Hempel University of Chicago, Ravi Chugh University of ChicagoMedia Attached
|Wrap-up Discussion and Feedback|