In any programming language, the order in which you compose functions is important.
In CSS — and in keeping with your analogy — the order in which "functions" are defined is important.
Obviously, they are not 100% comparable. CSS is not a programming language.
In programming, `f . g . h` is not the same as `h . f . g`.
In CSS, `<i class="a b c"></i>` is the same as `<i class="b c a"></i>`.
In programming, the order in which you define functions is not important — it's the order in which you use them which is important.
In CSS, it is the exact opposite.
To further drive the point home: assuming the names of these classes aren't lying, what colour is the text of this element?
<div class="text-red text-blue">foo</div>
It depends on the order in which the classes were defined. This also demonstrates why "pure" is a poor choice of word when describing anything to do with CSS. Nothing here is "pure".
I think it is more comparable to using function composition, hence the whole "Functional CSS" moniker. The idea is using multiple atomic "functions" (in this case, in the form of classes) to transform an element by composing.
Think like the pipe operator in Elixir:
other_function() |> new_function() |> baz() |> bar() |> foo()