Hacker News new | ask | show | jobs
by blasdel 6072 days ago
Haskell does not semantically have closures at all, because functions have only their arguments -- no scope to close over.

Lexically, there's where clauses to scope function definitions, but that gets desugared very early, and is really not the same thing at all anyway (the name binding is completely static).

1 comments

Of course Haskell has closures, there's always a scope to close over:

f x = (\y -> x + y)

That's still just high-level lexical sugar - the 'scope' is not captured, just rewritten. After desugaring, there is no scope left, even lexically.

It's completely different from a 'closure' in a language that has variables.