Tote: Multiset Rewriting Language

I’ve been interested for a while in symbolic visual programming, and I made a IDE to test some ideas around writing GUIs entirely in multiset rewrite rules. Tote is a playground that lets me play with some of these ideas. I think it’s relevant to malleable systems because it presents programming in its most elementary form(a single while loop), and can be implemented easily on near anything at all, in fact, all you need for this is a bag with marbles of different shapes or color.

Riffing on Le Guin’s Carrier Bag Theory of Fiction, this presents a primordial vision of computation in which programs are written as a list of changes in the content of a bag, and programming can be done entirely without the need for textual representations.

Programming is done by dragging things from the Panel(left) into the Rules(middle) or Bag(right). Step through the evaluation by pressing the button with the squiggly symbol(bottom right) to rewrite the symbols in the Bag.

Once the rules have been created, add things to the Bag by dragging them from the Panel. To get the resule of 8-3, add 8 times the first symbol(triangle), 3 times the second(lozenge), and the subtract symbol(empty dot). Step through the evaluation by pressing the squiggly symbol until no transformation is possible.

Tic Tac Toe

My favourite bit about all this is the the UI is the rules is the UI, there’s no code that defines what the UI looks like and what it does, it’s all one and the same.

Order in Chaos

Multisets contained unordered data, but by a bit of metadata on symbols, it’s possible to give the illusion of order. Check out how the player position is represented and the effect it as on the UI.

Try it out

https://hundredrabbits.itch.io/tote

3 Likes

I’d love to see what happens if a bunch of bored school kids with no prior exposure to programming get their hands on this.

3 Likes