The Editor

    Part of this project is an editor which takes Expressions of Change as primitives.

    In the articles below this editor is presented in more detail; starting with the general design but drilling down to include various implementation details in later articles.


  1. Introducing the Editor

    The first step towards making expressions of change available in some programming language is to build an editor that can construct them. The first steps towards this editor have been made and are presented here.

  2. The Editor - First Video

    A short video of the editor has been posted to YouTube. It can be viewed below.

  3. Hash Consing

    Some operations from our clef take a full history as one of their arguments. In this article we’ll show how this can be efficiently implemented using a technique similar to Hash Consing.

  4. T-Indices

    The editor presented on this website is an editor of s-expressions that treats modifications to those expressions as first level citizens. This opens up the possibility to reference the children of a given list-expression by their order of appearance.

  5. Constraints on Replace

    The operation Replace replaces a child node with a new one. This new node is recursively described using a history of changes. In this article we compare two scenarios: in one we impose the constraint that the new history must be an continuation of the history so far. In the other we don’t impose this constraint, which is to say that the new history may be anything.

  6. Constructing S-Expressions

    In Expressions of Change mechanisms of construction are put center stage. The first and most practical application of such methods is the actual construction of s-expressions; an algorithm is presented and its performance characteristics explored.

  7. Animating history transitions

    We can use animations to show transitions between histories of different part of the program structure when navigating.

  8. Animating history: Implementation

    In the previous article we have seen how we can show animations in the history pane of the editor to subtly illustrate how the construction of different levels of our program relate to each other. Here we provide some notes on these animations are implemented.