Function Currying
What is auto-currying in the context of functional programming libraries?
Auto-currying is a technique where functions are automatically curried without explicitly calling a curry utility. In libraries like Ramda or Lodash/fp, most functions are auto-curried by default. This means they're designed to work both with all arguments at once or with partial application. For example, a function like `add(a, b)` would automatically become `add(a)(b)` when only one argument is provided. This design makes the entire API more consistent and composable, as any function can be easily used in function composition or partial application scenarios without additional transformation. It simplifies functional programming patterns and encourages their use throughout an application.