> 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.