Résumé du chapitre 11
L'intérêt de l'utilisation de définitions locales est :
Les liaisons locales apparaissent dans un environnement local qui n'est créé que pour la durée de l'évaluation de l'expression les contenant. Les liaisons locales ont toujours priorité sur les liaisons globales, il y a masquage du global par le local.
La syntaxe est la suivante :
(let/let* (liste_de_liaisons expression ) expression)
où
et la liste de liaisons de la forme : ( (var_1 expression_1)
(var_n expression_n) ).
L'évaluation se déroule ainsi : dans le cas du let, toutes les expression expression_i sont évaluées dans l'environnement englobant avant liaison avec les identificateurs, alors que dans le cas du let*, les liaisons sont effectuées séquentiellement dans l'environnement englobant qu'elles complètent aussitôt. L'évaluation de l'expression constituant le corps du let/let* se fait ensuite dans l'environnement ainsi obtenu. L'environnement englobant n'est pas modifié.
Pour définir une liaison localement à une fonction f, il suffit de placer la définition de la liaison (fonctionnelle ou non) entre la partie ``(lambda (...)'' et le corps de la fonction f :
L'identificateur g n'est pas visible au niveau englobant.