I've been messing around with a language similar to xorvoid's forsp (https://xorvoid.com/forsp.html) and have come across some pretty cool stuff. I programmed the interpreter in a style very similar to CPS, and made the choice early on to have the program being run, the bindings, and the stack all be represented as cons cells within the language. All primitives in the language are simply functions of the form (prog, stack, binds) including the evaluator. This made implementing macros extremely easy, as I could just add a primitive that pushed the rest of the program to the stack and evaluated the list at the top of the stack, essentially swapping that list with the program. There's a ton of possibilities for this but one really cool one is that the quoting mechanism is implemented in the language itself.

@jeefle Joy, the original catlang, was oriented around "quotation". They were list the represented programs and could be menipulated as such. There was a fair bit of work and exploration done with Joy before von Thun passed away.

https://hypercubed.github.io/joy/joy.html

The Joy Programming Language - By Manfred Von Thun

Joy is a programming language based on the composition of functions and was created by Manfred Von Thun.

@jeefle There is also explorations on how catlangd relate to term rewriting as well.
@andnull Fantastic, I'll definitely check this out, i'd looked at Joy before but i'd never realized its metaprogramming capabilities. The rewriting stuff is also wonderful!
@jeefle Forsp definitely expands on them with the ability to have bindings. But, bug strength with catlangs is the ability to extract any string in your program and turn it into it's own definition / subprogram. Everything is oriented around the idea that "juxtaposition is composition" and it allows for pretty powerful program transformations. It is rather satifying rending apart code until you have the exact DSL you want for it.
@andnull @jeefle Wow actually Forsp has some similarities with my own min language (https://min-lang.org), even syntax-wise... parenthesis to create quotations and even "sigils" prepended to symbols. Nice. Tbh every time I think about implementing a Catlang (see hex as well) I end up picking the same syntax and constructs and improve on them.
min language - Welcome to the min programming language

The min programming language is a small, concatenative, interpreted programming language that fits in a single 1MB file.