¿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!

foxdonut
fuente
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.

Mac
fuente
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.

Brian Gianforcaro
fuente
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 .

Christian Berg
fuente
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

pjb3
fuente
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.

Rayne
fuente
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.

Kzqai
fuente
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 .

Sean Corfield
fuente
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.

Jim Anderson
fuente
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.

claj
fuente
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.

Daniel Compton
fuente
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.

Marko
fuente