¿Cómo se acerca Clojure a la separación de las preocupaciones? Como el código es información, las funciones pueden pasarse como parámetros y utilizarse como devoluciones ...¿Cómo aborda Clojure la separación de preocupaciones?
Y, dado que existe ese principio "Mejores 1000 funciones que trabajan en 1 estructura de datos, más de 100 funciones en 100 estructuras de datos" (o algo como eso).
Es decir, empacar todo un mapa, darle una palabra clave como clave, ¿y eso es todo? funciones, escalares, colecciones, todo ...
La idea de Separation of Concerns se implementa, en Java, mediante Aspects (programación orientada a aspectos) y anotaciones. Esta es mi opinión del concepto y podría ser algo limitada, así que no lo dé por sentado.
¿Cuál es la manera correcta (forma idiomática) para andar por Clojure, para evitar los WTFs de compañeros programadores _
Podría ser un poco más específico sobre lo que está preguntando. Separación de preocupaciones es un término que se usa para referirse a 100 cosas diferentes. – Sami
Los aspectos son una forma de modificar el comportamiento del código existente sin acceso a su fuente. Clojure y otros Lisps proporcionan algo similar a través de variables dinámicas, que son esencialmente globales con sus propios stacks. Las funciones de nivel superior (las creadas con defn) son variables dinámicas y pueden vincularse con 'binding'. La sintaxis de 'binding' se parece a' let', pero el enlace se usa dentro de las llamadas dentro del formulario de enlace. – Zak