I Love Forth, but I'm also enamored by functional programming... so exploring these together, you find some "concatenative" languages:
l could not get the "Joy language" to compile/run on my hardware, so I started making interpreters (as one does).
I vowed that no one would have to install anything to just "try" Joy. Which lead me to make this browser based language, Pounce.
In the process of making interpreters, choices are made that eventually deviated from "pure" Joy.
Pounce has "zero state" outside of the stack and the program queue (dequeue). see https://pounce-lang-show-case.netlify.app/ and https://github.com/pounce-lang
https://pounce-lang-show-case.netlify.app/
You can edit code in the blue text boxes interactively and see the result in the yellow box below.
https://pounce-lang-show-case.netlify.app/
https://github.com/pounce-lang