March 22, 2026
Hold the curry, serve the drama
A Case Against Currying
Dev world splits over “currying”: elegant shortcut or confusing gimmick
TLDR: An article challenges “currying,” a way to feed inputs into functions step-by-step. Comments explode: fans call it Haskell’s best trick, critics demand named parameters and clarity; Coalton even dropped currying, making this a real showdown over how we write and read code.
An eyebrow-raising essay argues against “currying”—the trick of feeding a function its inputs one at a time—claiming elegance comes with trade-offs. The comments immediately turned into a food fight: is this magic sauce or just messy leftovers? One camp rolled their eyes and called currying a party trick, with leoc branding it “low-level” and “anti-declarative.” Another camp swooned, with Haskell fans insisting it’s the smoothest way to write code, no hand-made glue needed.
Then came the practical crowd. lukev said business software needs named parameters (aka label your inputs) so devs don’t play memory games with the order of arguments. Meanwhile, messe kicked off a nerd scuffle over whether two ways of passing inputs are actually the same under the hood, asking why we’re even drawing distinctions. And dropping a bombshell: recursivecaveat pointed out that Coalton, a functional language, just removed currying—yup, it’s gone—sparking “is the tide turning?” vibes (link).
Humor? Plenty. Commenters leaned into the food puns (“hold the curry, pass the tuples”), while others begged for clarity over cleverness. The vibe: team elegant shortcuts versus team explicit labels, with Coalton’s move adding gasoline to a very spicy thread.
Key Points
- •The article defines currying and shows a three-argument function as nested single-argument functions, with types and associativity rules.
- •It contrasts three multi-parameter styles: parameter-list (imperative), curried (functional), and tuple (single tuple parameter).
- •It states that (P1, P2) -> R and P1 -> P2 -> R are isomorphic, making the styles theoretically equivalent.
- •Partial application is presented as the main practical reason for currying, demonstrated by fixing arguments of a curried add function.
- •Higher-order uses with map, foldr, and function composition are shown (e.g., defining length and a 2D length); the excerpt hints at a critique of assumptions about partial application.