Si es similar o no a setq
y setf
? No hay una gran diferencia entre flet
y labels
?¿Cuál es la diferencia entre "flet" y "labels" en Common Lisp?
¡Sinceramente!
Si es similar o no a setq
y setf
? No hay una gran diferencia entre flet
y labels
?¿Cuál es la diferencia entre "flet" y "labels" en Common Lisp?
¡Sinceramente!
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.
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. –
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