Iiiinteresting. It reminds me of a hillel wayne thread from a while back that I remember poorly and can't find but will try to paraphrase.<p>It was like "programming languages and workflows are built around the state of having written code rather than writing code." I think the example was how in most languages you can remove a few chars or a symbol and put it in a 100% invalid state where none of the tools will work at all. A few seconds ago you had a bunch of type information, jump-to-definition, auto formatting etc, now you have a compiler error instead.<p>It really stuck with me because it described an experience so common I don't even really notice it anymore but really. What would it be like to work in a language that considered "non-functional" states still "valid" and tried to express what they knew about the gaps?<p>This is a very different idea but I feel like it's approaching some of the same concepts, in a way.
I like the idea of editing AST directly instead of just plain text. JetBrains MPS[1] is an editor based on the same principle (but much more mature). Also, the Unison language stores its code only as AST, not text[2].<p>[1] <a href="https://www.jetbrains.com/mps/" rel="nofollow">https://www.jetbrains.com/mps/</a><p>[2] <a href="https://jaredforsyth.com/posts/whats-cool-about-unison/#Code-is-stored-as-a-structured-type-checked-tree-in-a-database-not-as-text-in-files" rel="nofollow">https://jaredforsyth.com/posts/whats-cool-about-unison/#Code...</a>
The upper-right ? leads to a Twitter thread with more detail:<p><a href="https://twitter.com/dm_0ney/status/1414742742530498566?s=20" rel="nofollow">https://twitter.com/dm_0ney/status/1414742742530498566?s=20</a>
It made me think of Lamdu[1] a bit. I’m glad to see people thinking and building in this area.<p>[1] <a href="http://www.lamdu.org/" rel="nofollow">http://www.lamdu.org/</a>