Currying != partial application.
And while currying is useful in curried languages (to convert back from uncurried to curried), and partial application is useful period, the question is whether currying is useful, in general, in an uncurried language.
I don't think it is:
* You usually want to perform partial application, currying is an unnecessary intermediate step.
* Currying conflicts with rich "imperative" parameters e.g. overloading, default parameters, keyword parameters.
* Uncurried languages are usually imperative and effectful, that you have filled all the parameter spots does not mean you want to invoke the function.
Having a curried language is neat, and in curried languages converting back from uncurried to curried functions is tremendously useful. But it's not so for uncurried languages (which is most of them).
> which is why the partial application and pipeline operator proposals are so intertwined.
Again, partial application != currying. And pipeline operators can perform partial application (implicitly or explicitely) on their own. For a flagrant example, just see Clojure:
(->> users
(map :email)
(sendEmail)
(mapError (constantly "Error sending emails"))