A case against currying

emi-h.com
March 22, 2026
11 min read
🔥🔥🔥🔥🔥
51/100
Summary
Curried functions define n-parameter functions by applying one argument at a time, returning a new function for the subsequent parameters. This technique is common in purely functional programming languages, allowing for a more modular and flexible approach to function application.
Key Takeaways
- Curried functions define multi-parameter functions by applying one argument at a time, returning a new function for each subsequent argument.
- There are three main styles for defining multi-parameter functions: parameter list, curried, and tuple styles, each with different syntactic approaches.
- Partial application, which allows fixing one parameter of a multi-argument function, is often cited as a primary advantage of curried functions, but it is not exclusive to them.
- The types of functions in parameter list and curried styles are theoretically equivalent, meaning they can be transformed into one another without loss of functionality.
Coverage & discussions
Hacker News · emi-h.com
Community discussions
Hacker News discussion ↗
Historical count: 5 · 5 saved in sample · Historical sample
Analysis ready
Community Sentiment
Positives
- Currying allows for implicit partial application, which can lead to clearer code in certain contexts, enhancing readability and maintainability.
- In Haskell, currying can optimize function evaluations by allowing parts of a function to be reused across multiple applications, which can improve performance.
Concerns
- Currying can obscure the intent of function applications, making it less clear what the resulting function represents, which may hinder understanding.
- Some believe that currying and other functional programming concepts, like lazy evaluation, are experiments that newer languages should avoid due to potential confusion.



