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.
rottytooth · 33d ago
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).
Esras · 33d ago
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!
QuadmasterXLII · 34d ago
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
kibwen · 34d ago
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 ╵ ╷.
doodpants · 34d ago
Agreed; needs a tutorial.
thechao · 34d ago
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?)
rottytooth · 34d ago
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.
metalliqaz · 33d ago
It needs some fully commented programs as examples.
aa-jv · 34d ago
Truly beautiful code.
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 ..
layer8 · 33d ago
If there ever was a language to write spaghetti code in…
gabetax · 33d ago
From the toki pona conlang, this also visually reminds me of the "sitelen musi" writing system.
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/
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:
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.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).
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!
For languages like Rivulet, see the non-textual category https://esolangs.org/wiki/Category:Non-textual or the two-dimensional category https://esolangs.org/wiki/Category:Two-dimensional_languages
Fun
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?)
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 ..
https://www.reddit.com/r/tokipona/comments/hlpvx0/sitelen_mu...
With all the AI focus on coding, it feels like we're going to end up sticking with a few languages because that's what it's good at or trained on.
https://en.wikipedia.org/wiki/Quipu