Fermeture Closure
Fonction qui « capture » des variables de sa portée lexicale. function counter() { let n = 0; return () => ++n; } — la fonction retournée garde accès à n même après le retour de la fonction parente. Standard dans les langages modernes : JS, Python, Ruby, Go, Rust.
Usages courants : callbacks avec état capturé, fabriques de fonctions, application partielle, encapsulation sans classes. En JavaScript, permet le pattern IIFE (Immediately Invoked Function Expression). En Python, les fonctions imbriquées utilisent le mot-clé nonlocal pour muter les variables capturées. Piège mémoire : une fermeture garde une référence vers la portée capturée — fuite possible si elle capture de gros objets. En Rust, les closures sont typées (Fn, FnMut, FnOnce) avec une sémantique de possession explicite. Dans les langages fonctionnels typés (Haskell, OCaml), la fermeture est la brique de base : tout se construit autour.