Joy (a programming language)
In Joy, everything is a function that takes a stack as an argument and returns a stack as a result.
Source: Joy (programming language)
Quite a dense Wikipedia page!
In Joy, the meaning function is a homomorphism from the syntactic monoid onto the semantic monoid. That is, the syntactic relation of concatenation of symbols maps directly onto the semantic relation of composition of functions. It is a homomorphism rather than an isomorphism, because it is onto but not one-to-one; that is, no symbol has more than one meaning, but some sequences of symbols have the same meaning (e.g. “dup +” and “2 *”).
I think you have to think about math and computer science regularly to get much out of that paragraph.
I’m not sure if I’d ever use this language for anything, but stack-based languages are still fascinating.