Consider the following function of two parameters, written in Haskell/PureScript syntax:
f x y = g x (m (h y))
= (g x . m . h) y
We can now eta-reduce/partially apply f instead in the definition (which is possible because f is curried by default): f x = g x . m . h
If I were using pointfree style at all (which I almost never do), this is where I'd stop. However, you can go the whole hog and strip out all the arguments: = g x . (m . h)
= ((. (m . h)) . g) x
f = (. (m . h)) . g
I've made use of everything you listed, but it's only when you go this far that your function is truly free of "points".Exactly. But in all fairness to the parent comment to yours, the original article doesn't convey this as well as you lucidly did, and his confusion is perfectly understandable.
"Point free style" is the name for the results of writing code where you do not introduce many new variables. You lean on function composition, currying, and often times this style benefits from partial application (famously with (.) and (.).(.) and others, but in general even with folds and traversals).
It's not really a problem to introduce a description for the style?
The rest is that "point free" describes a programming paradigm, while terms you listed describe the mechanisms you can use to apply it.
Something, something, only discussing the composition of maps without ever talking about how the initial categories are tied to points. Category theory always makes for weird names for programming features.