The page for Joy, Manfred von Thun's concatenative language, is a little better:
> Joy is unusual ... in its ... lack of formal parameters.
So, where in a standard ALGOL- or C-type language, you'd define a function that squares a number like this:
return x * x
let square x = x * x in square 2
DEFINE square == dup *.
Now, Joy in particular was written as a research language about recursive combinators. So a mostly-idiomatic* factorial function in Joy looks like this:
DEFINE fac ==
[dup 1 -]
The neat thing about this is that you don't need to define functions and reference them from inside themselves in order to get recursion, and you can write code that's a little more legible than using the Y combinator for everything. You could also write something like this:
DEFINE fac-explicit-recursion ==
[dup 1 - fac-explicit-recursion *]
`linrec` is a function that expects four quoted functions as the top elements on the stack. It executes the first function; if that 'returns' true, it executes the second one and stops, and if not, it executes the third function, recurses, and then executes the fourth.
A while ago, I started working on a Joy interpreter in the browser. I haven't gotten around to finishing it yet, but it's at least working well enough that you can (hopefully) step through the https://defseg.io/joyjs/
For a flashier example (which won't work there right now, because I haven't implemented... `binrec`... yet), here's quicksort:
[size 1 <=]
[uncons [>] split]
[[swap] dip cons concat]
But if the condition is false, it executes the third function to produce two values, recurses on both, and then uses the fourth function to combine them. So you get your pivot, split your list, recurse on both lists, and then stitch the two result lists and the pivot back together in sorted order.
* 'Mostly' because you'd actually write `[null] [succ] [dup pred] [*] linrec`, but the two functions are identical. (`null` is overloaded to also test for zero elements in an aggregate, but if you pass it an aggregate it'll throw a type error anyway.) Similarly for quicksort: `[small]  [uncons [>] split] [enconcat] binrec`.