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.
Note for syntax:
A parenthesized list is not run but instead just pushed to the stack. The ',' builtin evaluates a list within a seperate binding context. The '!' builtin swaps the list at the top of the stack and the program being evaluated. The '$' creates a new binding between the symbol proceeding it in the program and the value at the top of the stack.


