¿Cuál sería un ejemplo de un condicional anafórico en Lisp? Por favor, explica el código también.¿Cuál sería un ejemplo de un condicional anafórico en Lisp?
Respuesta
Un ejemplo es el Common Lisp LOOP
:
(loop for item in list
when (general-predicate item)
collect it)
La variable IT
tiene el valor de la expresión de prueba. Esta es una característica de ANSI Common Lisp LOOP
.
Ejemplo:
(loop for s in '("sin" "Sin" "SIN")
when (find-symbol s)
collect it)
vuelve
(SIN)
porque sólo "SIN"
es un nombre para un símbolo existente, aquí el símbolo SIN
. En Common Lisp, los nombres de los símbolos tienen nombres internamente en mayúsculas por defecto.
Paul Graham's On Lisp tiene un capítulo en Anaphoric Macros.
Básicamente, es una manera abreviada de escribir declaraciones que evita repetir el código. Por ejemplo, comparar:
(let ((result (big-long-calculation)))
(if result
(foo result)))
y
(if (big-long-calculation)
(foo it))
donde it
es un nombre especial que hace referencia a lo que simplemente se calculó en (big-long-calculation)
.
** @ Greg Hewgill: ** Gracias, todavía perdido en el código de Paul Graham, pero es divertido de procesar. – blunders
@blunders: De hecho. Las macros Anaphoric probablemente no sean el mejor lugar para comenzar, a menos que ya estés muy familiarizado con los diferentes estilos de macros en Lisp. En Lisp es una gran lectura. –
** @ Greg Hewgill: ** De acuerdo. He escaneado algunos libros de LISP, principalmente The Little Schemer, y similares. El "condicional anafórico" surgió aleatoriamente al hacer una investigación para esta pregunta: http://stackoverflow.com/questions/3920046/is-it-common-for-a-language-to-evalute-undefined-as-equal-to- falso-si-así-por qué-es – blunders
- 1. ¿De qué tipo de cálculo lambda sería un ejemplo Lisp?
- 2. ¿Sería bueno un operador de referencia condicional en C#?
- 3. ¿Sería Lisp extremadamente difícil para un programador nuevo (ish) aprender?
- 4. Obtener ejemplo condicional en StructureMap
- 5. ¿Cuál sería un nombre mejor para "esto" de Javascript?
- 6. ¿Cuál es un ejemplo real de CORBA?
- 7. ¿Cuál sería un método para crear un contador de números en Android?
- 8. ¿Cómo evitar el macro anafórico en Clojure?
- 9. ¿Cuál sería un buen proyecto para aprender node.js
- 10. En un marco (PHP), ¿cuál sería un buen nombre para una clase de "gerente"?
- 11. ¿Cuál sería getDesktopProperty() para Linux?
- 12. ¿Hay un ejemplo simple para explicar las macros de Lisp a un programador "genérico"?
- 13. ¿Cuándo sería útil un flip-flop Ruby?
- 14. Conde condicional en un campo
- 15. En Emacs-lisp, ¿cuál es la forma correcta de utilizar call-process en un comando ls?
- 16. ¿Un embellecedor para lisp?
- 17. ¿cuál sería una forma rápida de leer un archivo de propiedad en python?
- 18. ¿Cuál es el propósito de un signo de interrogación después de un tipo (por ejemplo: int? MyVariable)?
- 19. ¿Cuál es un buen ejemplo de una aplicación Java Swing?
- 20. Eliminación de un tipo en Common Lisp
- 21. ¿Cuál sería un buen algoritmo para una verificación circular de referencia en este caso?
- 22. ¿Cuál sería una forma sensata de implementar un Trie en .NET?
- 23. Cambio de color condicional en un gráfico
- 24. Operador de coma en un condicional
- 25. ¿Cuál es un buen ejemplo de un método __eq__ para una clase de colección?
- 26. ¿Cuál es la diferencia entre un átomo y un símbolo en Common Lisp?
- 27. Cuál sería la mejor forma de almacenar registros en SQL
- 28. ¿Hay un preg_replace condicional en PHP?
- 29. Lisp Intérprete en un programa en C++
- 30. Clave/valor condicional en un hash de ruby
Estoy familiarizado con el término "anafórico" en lo que respecta a las lenguas naturales; por ejemplo, un pronombre puede considerarse una referencia anafórica de un sustantivo mencionado anteriormente. "John es programador. Trabaja para Google". En este ejemplo, "él" es una referencia anafórica de "Juan". Así que creo que debes explicar qué significa un "condicional anafórico" en el contexto de la programación de Lisp, no es un término comúnmente usado. –
** @ Jim_Lewis: ** Aquí hay una explicación de lo que significa un "condicional anafórico" en el contexto de la programación de Lisp: http://weblogs.java.net/blog/2006/06/29/more-literate-programming-language- level-anaphora – blunders
@Jim Lewis: Como era de esperar, eso es precisamente lo que * anaphoric * significa al referirse a las macros. Ver mi respuesta para enlaces y ejemplos. –