https://www.hannobraun.com/
Well, turns out that architecture was insufficient to advance the demo any further, and now I'm rewriting everything. Back to form, I guess!
Well, turns out that architecture was insufficient to advance the demo any further, and now I'm rewriting everything. Back to form, I guess!
My immediate goal here is to show any syntax or runtime errors, highlighting where in the code they happen. This not an editor (yet!).
My immediate goal here is to show any syntax or runtime errors, highlighting where in the code they happen. This not an editor (yet!).
Before, I had a placeholder that just used the terminal in the most basic way. Now it renders descriptions in the same place, and you don't have to confirm input with the enter key.
Before, I had a placeholder that just used the terminal in the most basic way. Now it renders descriptions in the same place, and you don't have to confirm input with the enter key.
Honestly, I'm shocked. I knew I was doing everything I could to make this easy, but still expected that somehow, I missed some problems and would spend weeks. It barely took two days.
Honestly, I'm shocked. I knew I was doing everything I could to make this easy, but still expected that somehow, I missed some problems and would spend weeks. It barely took two days.
I can't be fully certain that everything is correct, but things look reasonable so far. Next, I'll start working on the interpreter, which should flush out any hidden issues.
I can't be fully certain that everything is correct, but things look reasonable so far. Next, I'll start working on the interpreter, which should flush out any hidden issues.
This sample script is all I have right now. I've decided to start with a fresh implementation for the demo, as I would be throwing out most of the old code anyway (which is the whole point).
This sample script is all I have right now. I've decided to start with a fresh implementation for the demo, as I would be throwing out most of the old code anyway (which is the whole point).
So of course I have this voice in the back of my head now, telling me this is going to be easy.
So of course I have this voice in the back of my head now, telling me this is going to be easy.
Monobloc Synth, the code-driven software synthesizer, is a means to approach this goal. But I no longer think it is my best option, and I will switch to a different use case for Monobloc.
Let me explain.
🧵 1/8
Monobloc Synth, the code-driven software synthesizer, is a means to approach this goal. But I no longer think it is my best option, and I will switch to a different use case for Monobloc.
Let me explain.
🧵 1/8
```
a 0 > then { ... } else { ... }
```
`then`/`else` can also stand alone, for early returns and such:
```
a 0 > else { fail }
...
```
This went pretty quick. It's just a bit of syntax sugar after all, for the binder conditionals I finished yesterday.
🧵 1/3
```
a 0 > then { ... } else { ... }
```
`then`/`else` can also stand alone, for early returns and such:
```
a 0 > else { fail }
...
```
This went pretty quick. It's just a bit of syntax sugar after all, for the binder conditionals I finished yesterday.
🧵 1/3
```
a 0 > => 1 then { ... } else { ... }
```
`then`/`else` also work alone:
```
a 0 > => 1 else { return }
...
```
Next, I want to support this syntax without the binder:
```
a 0 > else { return }
```
```
a 0 > => 1 then { ... } else { ... }
```
`then`/`else` also work alone:
```
a 0 > => 1 else { return }
...
```
Next, I want to support this syntax without the binder:
```
a 0 > else { return }
```
🧵 4/4
A lot of this time, I spent cleaning up the part of the compiler that lowers the syntax tree into the continuation-based intermediate representation. Lots of cruft had accumulated there!
🧵 1/4
A lot of this time, I spent cleaning up the part of the compiler that lowers the syntax tree into the continuation-based intermediate representation. Lots of cruft had accumulated there!
🧵 1/4
In this thread, I'm going to present my thoughts on that, and how it relates to Monobloc.
🧵 1/12
Lots of weirdness there (why is the syntax so redundant?), but interesting stuff too. I really like rationals: verselang.github.io/book/02_prim...
In this thread, I'm going to present my thoughts on that, and how it relates to Monobloc.
🧵 1/12
Lots of weirdness there (why is the syntax so redundant?), but interesting stuff too. I really like rationals: verselang.github.io/book/02_prim...
Lots of weirdness there (why is the syntax so redundant?), but interesting stuff too. I really like rationals: verselang.github.io/book/02_prim...
First, I've started going through the open design questions that lead to this decision. See what I have preliminary answers for and what i should defer.
🧵 1/3
First, I've started going through the open design questions that lead to this decision. See what I have preliminary answers for and what i should defer.
🧵 1/3
Well, I may have the answer: Because that raises many design questions, which leads to increasing analysis paralysis.
🧵 1/4
Well, I may have the answer: Because that raises many design questions, which leads to increasing analysis paralysis.
🧵 1/4
But enough of that for now. Time to add more features!
But enough of that for now. Time to add more features!
What I published so far already had a test suite. But to improve test coverage further, I've added property tests: tangled.org/hannobraun.c...
🧵 1/4
What I published so far already had a test suite. But to improve test coverage further, I've added property tests: tangled.org/hannobraun.c...
🧵 1/4
Lots more to do before the first release, of course!
Lots more to do before the first release, of course!
I found that the host interface was too tightly coupled with the specific host in my prototype.
🧵 1/2
I found that the host interface was too tightly coupled with the specific host in my prototype.
🧵 1/2