I am aware of the role of the stack in concatenative languages, but what about the retain parameter in the primitive functions? In most of them it is unused...
What is the retain stack typically used for?
But, if your language can store lists on a stack, you're Turing complete again! One example if a Joy language, where you can have quotation on stack, assemble them and decompose back.
Most of the time you store there various intermediate values. It depends on the nature of language. For example, Forth variants often store loop counters on retain stack.