¿Cuándo y dónde coloca las anotaciones de tipo en el código de Clojure? Obviamente cuando el rendimiento cuenta. Pero, ¿existen reglas por las que se puede vivir de cuándo (solo cuando se hace Java Interop?) Y dónde agregarlas (argumentos de definición de función).¿Cuándo y dónde colocas las anotaciones de tipo en el código de Clojure?
Respuesta
La razón primordial de que I "m en cuenta es el rendimiento. Escriba dando a entender en clojure elimina la reflexión, lo que puede ralentizar el rendimiento. Así que me gustaría poner toques tipo de funciones que he midió el rendimiento crítico.
Hay una description en la sección de java interoperabilidad en clojure.org Entre las observaciones:..
Clojure admite el uso del tipo de consejos para ayudar a que el compilador para evitar la reflexión en áreas de rendimiento crítico de código Normalmente, se debe evitar el uso de sugerencias de tipo hasta que haya un cuello de botella de rendimiento conocido.
... Una vez que se ha colocado una sugerencia de tipo en un identificador o expresión, el compilador intentará resolver cualquier llamada a métodos a partir de allí en tiempo de compilación. Además, el compilador rastreará el uso de cualquier valor de retorno e inferirá tipos para su uso, y así sucesivamente, por lo que se necesitan muy pocos consejos para obtener una serie de llamadas resueltas en tiempo de compilación. Tenga en cuenta que las sugerencias de tipo no son necesarias para los miembros estáticos (¡o sus valores devueltos!) Ya que el compilador siempre tiene el tipo de estática.
Siempre puede activar el indicador de advertencia en la reflexión para ver dónde se está llamando la reflexión y, en consecuencia, dónde pueden ayudar las sugerencias de tipo.
EDIT:
cuanto a su pregunta "Solo para la interoperabilidad de Java?" --no. Las sugerencias de tipo serán útiles incluso en una aplicación de clojure pura. El problema de la ralentización de la reflexión es una realidad en la JVM, y es un problema que los lenguajes dinámicos deben abordar en general.
En cuanto a consejos, donde tipo se pueden colocar, desde clojure.org:
Se pueden colocar en los parámetros de función, nombres dejar de ruedas, nombres var (cuando se define), y expresiones:
Sé que ya aceptó una respuesta y esta no es una respuesta directa a su pregunta, pero Lau acaba de publicar un artículo muy bueno en Functional Fluid Dynamics in Clojure, que es bastante educativo cuando se trata de sugerencias tipográficas por motivos de rendimiento.
+1 Es un gran artículo. –
404 - el artículo parece haber desaparecido ahora :( – jocull
[máquina de retorno] (https://web.archive.org/web/20100403083120/http://www.bestinclass.dk/index.php/2010/03/ functional-fluid-dynamics-in-clojure /) al rescate! –
- 1. IoC, ¿dónde colocas el contenedor?
- 2. C#, Ninject: ¿Dónde colocas el kernel y tus módulos?
- 3. ¿Dónde colocas declaraciones SQL en tus proyectos de C#?
- 4. ¿Dónde están las anotaciones JDBC4?
- 5. en Rails ¿dónde colocas tus barredoras?
- 6. ¿Dónde colocas tus márgenes de CSS?
- 7. ¿Cuándo se ejecutan las anotaciones de Java?
- 8. ¿Cómo y dónde se utilizan las anotaciones en Java?
- 9. ¿Dónde colocas una clave de cifrado en un servidor público?
- 10. generación de código en Clojure
- 11. Cuenta de administrador: ¿Dónde, cuándo y cómo?
- 12. Aproximación idiomática para estructurar el código fuente de Clojure
- 13. Simplificación de anotaciones de tipo
- 14. ¿Dónde poner anotaciones de hibernación?
- 15. ¿Cuándo es el cumpleaños de Clojure?
- 16. ¿Dónde colocas las clases que no son controladores, modelos, ayudantes o modelos de vista?
- 17. Cuándo y dónde debo usar WCF
- 18. Las condiciones de carrera y átomos clojure
- 19. ¿Deben eliminarse las anotaciones de tipo F # al refactorizar?
- 20. ¿Cuándo y dónde usar GetType() o typeof()?
- 21. ¿Diferencia entre esto y yo en las anotaciones de tipo propio? En
- 22. Java genéricos y anotaciones: Tipo-Safe
- 23. Convertir código Java en código Clojure rápido
- 24. Uso de Clojure con un servidor REST basado en anotaciones
- 25. ¿Cuándo y dónde establecer un IOperationInvoker personalizado?
- 26. ¿Dónde colocas los archivos CSS en el directorio de la aplicación Rails?
- 27. ¿Cuándo y dónde necesito archivos en una aplicación de rieles?
- 28. ¿Cómo trata el compilador las anotaciones?
- 29. SQLite Android ¿Dónde y cuándo inicializar SQLiteOpenHelper
- 30. ¿Dónde colocas datos de aplicaciones globales en una aplicación de iPhone?
¿Qué es un miembro estático en este contexto? – johnbakers