3 ms·
One key difference is that usually the captured values in a closure can't be mutated.
by sullyj3 5y ago
One key difference is that usually the captured values in a closure can't be mutated.
- pritambaral 5y agoI don't know where you're getting that from. In lambda calculus — where closures were first developed — there's no restrictions against mutation of captured variables or values.
- sullyj3 5y agoUh.. what? There isn't even a concept of mutation in lambda calculus.
- pritambaral 5y agoOnly in pure lambda calculus. But that's not because of closures. That's for all variables everywhere; captured, free, whatever. So your original statement — "usually the captured values in a closure can't be mutated" — still has no basis even if you insist "But, pure λ-calculus has no mutations". It's not because of closures that the captured variables became immutable. When used in any of many lambda calculi that do have mutations, closures support mutation just the same as any variable. Whether a variable is free or captured, that doesn't change if or how it can be mutated.