upvote
I was playing with Uiua, a stack and array programming languages. It was amazing to solve the Advent of Code's problems with just a few lines of code. And as GP said. Once you got the right form of array, the handful of functions the standard library was sufficient.
reply
> One of the issues DSLs give me is that the process of using them invariably obsoletes their utility.

That means your DSL is too specific. It should be targeted at the domain, not at the application.

But yes, it's very hard to make them general enough to be robust, but specific enough to be productive. It takes a really deep understanding of the domain, but even this is not enough.

reply
Indeed!

Another way of putting it is that, in practice, we want the ability to easily iterate and find that perfect DSL, don't you think?

IMHO, one big source of technical debt is code relying on some faulty semantics. Maybe initial abstractions baked into the codebase were just not quite right, or maybe the target problem changed under our feet, or maybe the interaction of several independent API boundaries turned out to be messy.

What I was trying to get at above is that APL is pretty great for iteratively refining our knowledge of the target domain and producing working code at the same time. It's just that APL works best when reifying that language down into short APL expressions instead of English words.

reply
>If you can manage to fluidly update your DSL design along the way, it might work

Forth and Smalltalks are good for this. Self even more so. Hidden gems.

reply