Editing Rune Programs

Fri, August 21, 2020
We have Runes. Now we gotta be able to write with them.

Recently, we've discussed how to create new Runes, how to add them to existing Rune languages, and how to typeset programs that combine Runes from different languages -- i.e.:


Today and yesterday evening, I spent some time in my wizard tower forging surfaces upon which wizards can arrange Runes. I have an interactive prototype working.

Below, if you drag around the runes on the left, you should see the compiled code update on the right (though I can't promise it'll work on all browsers, all screen sizes, all devices).


And of course, we may want to have multiple Rune surfaces on a single page (of documentation, of a spellbook, of lore, of an in-game popup, etc.), so it's important that surfaces don't affect each other.

Here's another one, just to test that we can do it.


For those curious about how you would code something like the above in a CodeSpells Authored Work, here's the gist:

(demo-editor
  (basic-lang)
  #'(define C
      (build small)))

And the same ideas we've seen in past posts apply: If you create new Runes, you can put them on surfaces with ease. If we have variables X ( ), Y ( ), and Z ( ) defined in (my-lang), we can create a surface as follows:

(demo-editor
   (append-rune-langs
     (my-lang)
     (basic-lang))
  #'(X Y Z))


Now, to solve various other problems:

I think I know the answers to these questions, but I have to build stuff to be sure.

Talk is cheap. Show me the code. ~Linus Torvolds

- Stephen R. Foster


P.S. Please consider supporting us on Patreon. We can't do this without you!