ManipML: Towards Bimodal Tangible Functional Programming
Part of the Proceedings of the Sixth Workshop on Live Programming (LIVE 2020).
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.