2012-02-02 10 views

Respuesta

30

En Common Lisp, tanto flet y labels hacer fijaciones de léxicos ligeramente diferentes géneros:

  • flet es una forma especial para la unión local de la función. Los enlaces no son recursivos y no se pueden referir entre ellos. Cada enlace contiene nombre de función, argumentos y cuerpo de función.

  • labels es una forma especial para el enlace de funciones locales. Los enlaces pueden ser recursivos y pueden referirse entre sí. Cada enlace contiene nombre de función, argumentos y cuerpo de función.

En Emacs Lisp, hay una pequeña diferencia. El formulario es como flet, excepto que realiza enlaces léxicos de los nombres de funciones en lugar de enlaces dinámicos.

+12

Una ventaja sobre las etiquetas flet es que si define una función 'foo' con flet, puede referirse a otra función llamada' foo' en el ámbito contenedor, mientras que con las etiquetas se referirá a sí mismo. –

+6

La pregunta era explícita sobre Common Lisp, * not * Emacs Lisp. Sería bueno eliminar el primer párrafo, ya que puede causar confusión. Hay muchos dialectos de Lisp: esta pregunta es sobre Common Lisp. – Drew

Cuestiones relacionadas