Je ne sais pas si vous appelez cela la formulation canonique, mais pour lier une fonction locale, le manuel GNU me conseille d'utiliser 'flet' :
(defun adder-with-flet (x)
(flet ( (f (x) (+ x 3)) )
(f x))
)
Cependant, par accident, j'ai essayé (après avoir joué un peu avec Scheme) l'expression suivante, où je lie une expression lambda à une variable en utilisant 'let', et cela fonctionne également si je passe la fonction à mapcar* :
(defun adder-with-let (x)
(let ( (f (lambda (x) (+ x 3))) )
(car (mapcar* f (list x)) ))
)
Et les deux fonctions fonctionnent :
(adder-with-flet 3) ==> 6
(adder-with-let 3) ==> 6
Pourquoi le second fonctionne-t-il ? Je n'ai trouvé aucune documentation dans laquelle "let" peut être utilisé pour lier des fonctions à des symboles.