Wanted to highlight an idea behind my last few posts: modularity and making the language part of a composition.
For example, in SuperCollider I can define new functions. This effectively extends or replaces some parts of the standard library, but it’s still a part of my composition and is distributable as such. What’s more, I don’t have to deeply understand how the underlying library does its thing. I can define a whole new DSL just for that one composition and it will play the same on pretty much any other SC instance.
In contrast, Orca doesn’t really have a user-facing language component, there is the Orca language baked into the implementation. The concept of an interactive text buffer as a livecoding interface is fantastic in itself, I’ve dreamt of something like that for years. The current language is very effective at expressing many constructs and compositional ideas, but there are others that are less achievable due to inherent language limitations. It’s hard to make a small language with the right balance of constraints for all possible cases.
The implementation is hackable and that’s great, though it seems most people opt for a “compiled app”. The experimental nature of Orca manifests itself quite differently in different domains, experimenting within a composition is very much not the same as meddling with the implementation, of which the language is an integral part.
This disparity between free composition and fixed language yields a single consensus-driven language and time spent on cordial arguments why something should or shouldn’t be implemented. Why not instead treat the language as an extendable nonsingular object and allow one of several to be chosen per composition? For example, maybe you want to make something without NWSE and now you have 4 free operators to redefine, or maybe you like the old behavior of L, or maybe a time-based Z, etc…
Orca could come with a canonical language loaded by default and a set of altered languages loadable via a command. An .orca file could be accompanied by a library.js file (this is where JS gets a plus for being an interpreted language). Language selection could be automated by preprocessing #! commands when reading a file.
Just laying some groundwork while contemplating a PR. 