A concatenative language differs from the functional programming language paradigm where terms correspond to values (including functions) and the fundamental operation is function application. In the Lambda calculus for example all terms correspond to values, function application, or function abstraction. However, in a catlang all terms correspond to functions on a tuple, or the composition of functions (which yields a new function, so is really a function).
@neauoire Once I saw the link out to Dr. Dobbs, I was wondering whether the author would be Christopher Diggins. :)
Looks like he's still doing interesting things around languages:
https://cdiggins.github.io/blog/linear-logic-and-linear-lisp.html
https://github.com/cdiggins