Let Over Lambda Chapter 3 Section 'Unwanted Capture' sagt:..Was kann schief gehen, wenn ich ein Makro definiere und nur einen seltenen Namen für eine temporäre Variable verwende?
„Sicher können wir selten genug Namen denken, so dass das Problem nie auftaucht Ja, in vielen Fällen, die Pakete und intelligente variable Namensgebung kann das Problem der variablen Erfassung lösen jedoch schwerwiegendsten Variable Capture Fehler im Code nicht direkt von einem Programmierer erstellt wurden, auftreten. Die meisten variable Erfassung Probleme nur Oberfläche wenn andere Makros Makro verwenden (mit Ihrem Makro kombinieren) in einer Weise, Sie erwarten nicht. "
und dann gibt mir kein Beispiel für den kühnen Teil. Was wäre eines dieser Beispiele? Stellen Sie sich eine hypothetische Lisp Dev-Team, wo seine verrückten Chef die Verwendung von gensym verboten oder alles, was zu werfen alphanumerische Würfel uninterned Symbole und die Programmierer einfach greifen schafft, um mit Zufallsvariablen Namen wie temp-27s63f8sk2n oder Summen 3t84hj4df, wann immer sie gensym verpassen. Was wäre ein Beispiel, wo das Team in Schwierigkeiten geraten wird?
davon Speaking, Emacs 24.3.1 definiert DOTIMES und DOLIST ohne uninterned Symbole zu verwenden. Seltsam.
Warum stimmen die Menschen dies zu schließen? Es ist eine echte und komplexe Frage. – d11wtq