experimental prototype implements an untyped first-order lazy pure functional language. The language has a novel blend of prototypical and functional semantics. This experiment serves as a proof of concept of direct-manipulation semantics without grammar or names.
Exploring the addition of higher-order functions uncovered a pleasing generalization: higher-order copying. If copying relationships themselves are subject to copying, then linking can be seen as a specialized form of copying. Everything then boils down to copying. Programs are constructed by copying and executed by copy flow: the projection of changes through copies. The simple idea of copying develops into a framework of higher-order continual copying of trees that serves as both a model of computation and a model of the process of programming itself.
Ongoing work is the formalisation of the theory of higher-order tree copying, and its implementation in a second version of the prototype. This generalization will enable higher-order functions and some novel constructions. Ancestral structures are a new primitive data type that combines the features of lists and records, along with unproblematic multiple inheritance. Rather than depending on symbolic names or ordinal positions, structures are related definitively through their ancestry of copying and editing operations. Adaptive conditionals are a new conditional construct that uses first-class program edits to dynamically adapt behavior, essentially a hygienic form of self-modifying code. Mutable state is a major open issue to be investigated.
[1] Jonathan Edwards. Example Centric Programming. In Companion to the 19th annual ACM SIGPLAN conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA'04 Onward) Vancouver, BC, CANADA, October 2004. [PDF]
[2] Jonathan Edwards. Subtext: Uncovering the Simplicity of Programming. Submitted to Object Oriented Programming Systems Languages and Applications Onward 2005 (OOPSLA'05 Onward). [PDF]
Computer Science and Artificial Intelligence Laboratory (CSAIL) The Stata Center, Building 32 - 32 Vassar Street - Cambridge, MA 02139 - USA tel:+1-617-253-0073 - publications@csail.mit.edu (Note: On July 1, 2003, the AI Lab and LCS merged to form CSAIL.) |