Nice overview, but could use better distinction between partial application and currying.
Put simply, a partial application (partially applied function) is a function which has already been applied to some - but not yet all - of its arguments.
A curried function is a function which takes multiple arguments one at a time by returning a series of functions which each take the next argument until the application is complete.
The one at a time requirement is important in curried functions because the unary nature of a partially applied curry is what makes it composable.
Because a function can only return a single value (even if that value is an array or stream), functions composed in a pipeline must be unary — they must expect a single argument.
Composition is foundational in functional programming. I wrote about this relationship in detail in my book, “Composing Software”. The chapter called something like “Curry and Function Composition”. If you Google it, you can probably also find a corresponding blog post. There’s also a video walkthrough for members of EricElliottJS.com.