Hacker News new | ask | show | jobs
by tel 4105 days ago
Sometimes you do not want an understandable name for a thing... instead a merely memorable one is far better.

Currying is actually an incredibly specific and universal thing. It's the act of noting that a function space

    (a, b) -> c
is the same as a "higher-order function space"

    a -> (b -> c)
in a very particular way. It's worth it to give this thing it's own name because it's a highly important and unique transformation.

"Curring" and partial application as it exists which take this notion further, such as those which transform (a, b, c) -> d to (a -> b -> c -> d) or (a, b, c) -> d to ((a, c) -> b -> d) are generalizations of the core concept and perhaps don't honestly deserve the name (if you're a stickler).

Merely calling currying and uncurrying by some operational name de-emphasizes these operations. It's like calling a "home run" a "quadruple" in baseball. Sure, it makes sense, but it's really just missing something.

1 comments

This makes sense. But would you say that there could be easier shorthand descriptors to supplement the terms? Or perhaps terms that are used to describe the utility of currying, but don't actually replace the specific (and useful) term?
I think it's fair to say that pithy ways of explaining the point and mechanism of currying are important. The terms you've been exploring here are definitely in that bucket.