Hi, I created this language as part of a series of experiments with bringing aspects of natural language into code. My previous language, Valence (https://danieltemkin.com/Esolangs/Valence), dealt with semantic ambiguity — this one with calligraphy. It avoids an overly logical syntax in favor of compactness and expressiveness.
This is beautiful, genuinely (the SVGs are lovely bits of artwork) and it's a fun puzzle to read, and I've shared with friends that like esolangs, including your book (good luck on publishing!).
In the "Data Strands" -> "Value Strands" section, you describe it as "Value strands (and other data strands), begin with a hook that points up (as in the third strand below) or to the left (as in the first two)" for the following example:
1 ╵╰──╮╭──╯╶╮
2 ─┘└─ └─╮
3
5 ╷
but the way I was parsing it was that the hook is '╰' or '╯', in which case both of those are hooks pointing up? It looks like a fairly innocuous typo, but I'm never sure with an esolang so wanted to ask.
Yes, that's a typo: the first two strands have hooks pointing up, the third to the left.
I forgot to mention that you can run the interpreter with -p to convert the program to pseudo-code. This makes it much easier to tweak the examples and experiment. I'll add that to the readme, along with more pseudo-code for the example programs.
And thanks so much!! Very excited to publish (Sept 2025).
Thanks, as I said, easy to fool yourself into thinking you're wrong when esolangs are involved.
The CLI tool is fantastic. I never thought that I'd see an esolang where "ergonomics of using it" was something the author would work on. I'll play around with that some more later, thanks again!
Is this what it feels like to learn to program as an adult? I can brainfuck and APL with the best of them, and this is the most alien language specification I’ve ever read
You'll have fun/existential horror with the esolangs wiki then, which describes thousands of languages (almost all unimplemented) in this vein: https://esolangs.org/wiki/Main_Page
I would like to know how to even begin building an intuition for writing something in this. I read the entire README and the only thing I understand is glyph start and end ╵ ╷.
I think each "line" is a stack expression, where one direction marks what value the stack pushes at that point, and the other direction (or index on the canvas? it's really unclear) marks the operation? So, maybe going down two lines is the number "two", then going right "one" pushes; now if we continue "right" three steps that means "add"?
There's no conditional operator on a single line. Instead, if two lines come "near" each other there's an alternate denotation that compares the values and either terminates (or rolls back?) the line's behavior to some earlier point (perhaps dependent on the value in the stack?)
The glyph start marker ╵ also marks a block of code; if several consecutive glyphs start with the same number of them, they are part of the same block.
When the question strand executes, it looks at whether a list element (or entire list) is zero or below. If so, the entire block is rolled back to its previous state.
So all branching is done as rollbacks. And loops end by rolling back their last iteration.
Looking forward to seeing this in graffiti form, sprayed all over some government building, giving the OCR-using hackers code to enter the (physical) backdoors that these scribbles are inevitably going to be indicating ..
I’m completing a book of these esolangs for MIT Press this fall including this; not much info yet online yet but here’s the link: https://mitpress.mit.edu/9780262553087/forty-four-esolangs/