¿Aplicación de muestra de Clojure de tamaño mediano?


96

¿Existe una aplicación de muestra de Clojure de tamaño mediano que pueda usarse como un ejemplo de "mejores prácticas" y una buena manera de ver cómo se vería dicha aplicación en términos de código y organización del código? Una aplicación web sería particularmente interesante para mí, pero lo más importante es que el programa haga algo comúnmente útil (blog, seguimiento de errores, CMS, por ejemplo), y no algo matemático que nunca haya tenido que implementar en la realidad. world (resolviendo el problema de las N-reinas, simulando Life, generando secuencias de Fibonacci y la tarifa habitual de los lenguajes de programación de funciones).

¡Gracias!


Iba a hacer exactamente la misma pregunta. Me pregunto qué tan práctico es en el "mundo real"
ScArcher2

5
La gente está demasiado asfixiada en este "mundo real"
Rayne

Hice un IRC Bot con él, es el lenguaje perfecto para él (el rendimiento no es un problema, los complementos de intercambio en caliente, la salida está relacionada trivialmente con la entrada - función). Para la mayoría de los demás usos, no es muy bueno. Demasiado desperdicio de CPU y especialmente demasiado uso de memoria, agitación de memoria, fallas de caché.
RokL

Respuestas:


42

Recomiendo el blog de vaca de Brian Carper. Según el autor, fue escrito con su propósito en mente.


A partir de 2018, cow-blog no se compila siguiendo las instrucciones. lein depsfalla con este mensaje: `` `Recuperando gaka / gaka / 0.1.0 / gaka-0.1.0.pom de clojars Intenté usar un repositorio HTTP inseguro sin TLS. Es casi seguro que esto es un error; sin embargo, en casos excepcionales en los que sea intencional, consulte lein help faqpara obtener más detalles. Intenté usar un repositorio HTTP inseguro sin TLS. Es casi seguro que esto es un error; sin embargo, en casos excepcionales en los que sea intencional, consulte los lein help faqdetalles. ``
Teodor

19

Si navega por el código fuente de clojure-contrib , puede ver cómo se implementan las bibliotecas en clojure.

También puede consultar " ClojureScript " en el mismo árbol de fuentes.

Permite que el código escrito en un subconjunto muy pequeño de Clojure se traduzca automáticamente a JavaScript.

El traductor ClojureScript es una aplicación Clojure completa.

También recomiendo revisar las muestras de Stewart Halloway's Port of Practical Common Lisp en Clojure si aún no lo ha hecho.


La biblioteca monolítica Contrib de Clojure se ha desaprobado en favor de un conjunto de nuevas bibliotecas contrib modulares que se pueden encontrar aquí: dev.clojure.org/display/doc/Clojure+Contrib (tenga en cuenta que Clojure se ha movido del repositorio richhickey en Github a el repositorio oficial de clojure)
Sean Corfield

15

Eche un vistazo a Compojure . Es un marco web escrito en Clojure, por lo que le permite escribir y ejecutar (en un Jetty integrado) aplicaciones web útiles en Clojure, y también sirve como un buen ejemplo de una porción considerable de código Clojure del mundo real.

Está en desarrollo activo y tiene un Grupo de Google útil .


1
Dado que la mayor parte del código ya no está, Compojure Ring podría ser el lugar para buscar ahora.
mac

Gran parte del código de generación HTML de Compojure ahora es parte de Hipo, creo ( github.com/weavejester/hiccup )
mikera

10

Vea la demostración de hormigas escrita por el autor de Clojure, Rich Hickey:

http://clojure.googlegroups.com/web/ants.clj

Aquí hay algunas buenas instrucciones para configurarlo junto con un entorno de desarrollo emacs:

http://riddell.us/clojure

Consulte también la presentación de Rich que acompaña a este código:

http://blip.tv/file/812787


1
Sigo siendo redirigido cuando intento ver la fuente. Curiosamente, tampoco puedo encontrarlo a través de Google.
AnnanFay

Parece que el enlace blip.tv está ahora en youtube.com/watch?v=dGVqrGmwOAw y creo que la descripción del código comienza aproximadamente 1 hora y 24 minutos después de la presentación.
Roger Allen

7

Clojure en sí es un buen ejemplo de las mejores prácticas de Clojure. Lea hacia el final de Core.clj, buen material.



5

Creo que Compojure es probablemente la mejor manera de dar un ejemplo. Dudo que sea un ejemplo de "tamaño mediano", pero probablemente haya subsecciones pequeñas que funcionarían. Al menos, ese será mi enfoque. sonrisas

Además, echa un vistazo

http://github.com/technomancy/mire/tree/master

que es un pequeño prototipo de cliente de barro construido en clojure, la ventaja es que es totalmente autónomo y probablemente bastante simple, incluidos los conceptos involucrados. Documentación, eh, está bien, pero los conceptos en el código se relacionan muy estrechamente con los elementos de acción del MUD que se ejecuta fácilmente.


5

Estamos a dos años de esta pregunta y, aunque todavía es temprano en el ciclo de un lenguaje, Clojure definitivamente se está utilizando para un trabajo de producción serio. En World Singles, tenemos varios miles de líneas de Clojure en producción que manejan todo tipo de tareas de propósito general en nuestra plataforma web; escribí en un blog sobre esto en mi serie Real World Clojure .

Para algunos proyectos de código abierto razonablemente grandes, no exactamente aplicaciones, sino infraestructura de alto perfil, puede mirar Storm de Twitter y Cascalog de BackType (ahora parte de Twitter). 4clojure.com ha sido mencionado como una aplicación web de código abierto, también vale la pena echarle un vistazo, pero tenga en cuenta el nuevo repositorio de github para 4clojure .


3

Una señal positiva: hay un artículo en InfoQ sobre "uno de los primeros informes publicados sobre el uso de Clojure en una implementación de producción a gran escala". No parece estar abierto, pero al menos es una señal de que Clojure se está utilizando en una aplicación de misión crítica en el mundo de producción real. Un gran paso para la comunidad de Clojure.




1

Solo puedo recomendarle que consulte Pedestal , un marco web muy prometedor, tanto del lado del servidor como del lado del cliente (donde facilita ClojureScript). Las cosas de la interfaz gráfica de usuario son un poco difíciles de entender, pero de la forma en que debería hacerse para mantenerse cuerdo en una aplicación grande.


1

edge es una aplicación de tamaño moderado que muestra la estructuración de una aplicación con Clojure, ClojureScript, Component, Yada, Aero y Boot.


0

Clojure es todavía demasiado joven y un objetivo en movimiento para tener aplicaciones de tamaño mediano con código fuente disponible todavía.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.