> Every function in Haskell has exactly one argument.
well partially applied functions may be used in the intermediary stages of function processing however if programmer expects a function to return primitive value (as opposed to a function), that return value will only be available once that function is fully applied.
In other words, for
f:: (...) -> z
where z is a primitive value (not a function), (...) can be as long as we like, if not full (...) are applied, we get
f1::(...')->z
To obtain z - the purpose f was written for - we need to pass full (...)
although every function may be passed 1 (or even 0) args, n or (in)complete args has some meaning.