3 ms·
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
by blasdel 17y 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).
- distortion 17y agoOf course Haskell has closures, there's always a scope to close over: f x = (\y -> x + y)
- blasdel 17y agoThat'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.