Exemple d'application Clojure de taille moyenne?


96

Existe-t-il un exemple d'application Clojure de taille moyenne qui pourrait être utilisé comme exemple de «meilleures pratiques» et un bon moyen de voir à quoi ressemblerait une telle application en termes d'organisation du code et du code? Une application web me serait particulièrement intéressante, mais le plus important est que le programme fasse quelque chose de communément utile (blog, bug-tracking, CMS, par exemple), et pas quelque chose de mathématique que je n'ai jamais eu à implémenter dans le réel world (résoudre le problème des N-reines, simuler la vie, générer des séquences de Fibonacci, et ce tarif habituel des langages de programmation de fonctions).

Merci!


J'allais poser exactement la même question. Cela me fait me demander à quel point c'est pratique dans le «monde réel»
ScArcher2

5
Les gens sont trop asphyxiés sur ce "monde réel"
Rayne

J'ai créé un IRC Bot avec, c'est un langage parfait pour cela (les performances ne sont pas un problème, les plug-ins échangeables à chaud, la sortie est trivialement liée à l'entrée - la fonction). Pour la plupart des autres utilisations, ce n'est pas très bon. Trop de gaspillage de processeur et surtout trop d'utilisation de la mémoire, de désabonnement de mémoire, de cache manquant.
RokL

Réponses:


42

Je recommande le cow-blog de Brian Carper. Selon l'auteur, il a été écrit avec votre objectif à l'esprit.


Depuis 2018, cow-blog ne se compile pas en suivant les instructions. lein depséchoue avec ce message: `` Récupération de gaka / gaka / 0.1.0 / gaka-0.1.0.pom à partir de clojars J'ai essayé d'utiliser un référentiel HTTP non sécurisé sans TLS. C'est presque certainement une erreur; Cependant, dans de rares cas où cela est intentionnel, veuillez consulter lein help faqpour plus de détails. J'ai essayé d'utiliser un référentiel HTTP non sécurisé sans TLS. C'est presque certainement une erreur; cependant, dans de rares cas où c'est intentionnel, veuillez consulter lein help faqpour plus de détails. `` ``
Teodor

19

Si vous parcourez le code source clojure-contrib, vous pouvez voir comment les bibliothèques sont implémentées dans clojure.

Vous pouvez également extraire " ClojureScript " sous la même arborescence source.

Permet au code écrit dans un très petit sous-ensemble de Clojure d'être automatiquement traduit en JavaScript.

Le traducteur ClojureScript est une application Clojure complète.

Je vous recommande également de consulter les échantillons Port of Practical Common Lisp de Stewart Halloway sur Clojure si vous ne l'avez pas déjà fait.


La bibliothèque monolithique Clojure Contrib a été abandonnée au profit d'un ensemble de nouvelles bibliothèques de contributions modulaires que vous pouvez trouver ici: dev.clojure.org/display/doc/Clojure+Contrib (notez que Clojure est passé du référentiel richhickey sur Github à le dépôt officiel de clojure)
Sean Corfield

15

Jetez un œil à Compojure . C'est un framework Web écrit en Clojure, il vous permet donc d'écrire et d'exécuter (sur une jetée intégrée) des applications Web utiles dans Clojure, et sert également de bon exemple d'un morceau important de code Clojure du monde réel.

Il est en cours de développement actif et dispose d'un groupe Google utile .


1
Étant donné que la plupart du code est maintenant parti de Compojure Ring, c'est peut-être l'endroit où chercher maintenant.
mac

Une grande partie du code de génération HTML de Compojure fait maintenant partie de Hiccup, je crois ( github.com/weavejester/hiccup )
mikera

10

Découvrez la démo de fourmis écrite par l'auteur de Clojure, Rich Hickey:

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

Voici quelques instructions intéressantes pour le configurer avec un environnement de développement emacs:

http://riddell.us/clojure

Consultez également la présentation de Rich qui accompagne ce code:

http://blip.tv/file/812787


1
Je continue à être redirigé lorsque j'essaye d'afficher la source. Curieusement, je n'arrive pas non plus à le trouver via Google.
AnnanFay

On dirait que le lien blip.tv est maintenant à youtube.com/watch?v=dGVqrGmwOAw et je pense que la description du code commence environ 1 h 24 après le début de la présentation.
Roger Allen

7

Clojure lui-même est un bon exemple des meilleures pratiques Clojure. Lisez vers le bas de Core.clj, de bonnes choses.



5

Je pense que Compojure est probablement la meilleure façon de prendre un exemple. Je doute que ce soit un exemple de «taille moyenne», mais il y en a probablement des sous-sections de petite taille qui fonctionneraient. Au moins, ça va être mon approche. sourires

Aussi, consultez

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

qui est un petit prototype de client de boue construit en clojure, l'avantage étant qu'il est totalement autonome, et probablement assez simple, y compris les concepts impliqués. Documentation, hein, ça va, mais les concepts du code sont très étroitement liés aux éléments d'action du MUD qui fonctionne facilement.


5

Nous sommes deux ans après cette question et, bien que ce soit encore tôt dans le cycle d'une langue, Clojure est définitivement utilisé pour un travail de production sérieux. Chez World Singles, nous avons plusieurs milliers de lignes de Clojure en production qui gèrent toutes sortes de tâches à usage général sur notre plate-forme Web - j'ai blogué à ce sujet dans ma série Real World Clojure .

Pour certains projets open source raisonnablement grands - pas exactement des applications, mais une infrastructure de haut niveau - vous pouvez regarder Storm de Twitter et Cascalog de BackType (maintenant partie de Twitter). 4clojure.com a été mentionné comme une application Web open source, cela vaut également le coup d'œil, mais notez le nouveau dépôt github pour 4clojure .


3

Un signe positif: il y a un article sur InfoQ sur «l'un des premiers rapports publiés de Clojure utilisé dans un déploiement de production à grande échelle». Cela ne semble pas être ouvert, mais au moins c'est un signe que Clojure est utilisé dans une application critique dans le monde de la production réelle. Un grand pas pour la communauté Clojure.




1

Je ne peux que vous recommander de consulter Pedestal , un framework Web très prometteur, à la fois côté serveur et côté client (où il facilite ClojureScript). Le truc de l'interface graphique est un peu difficile à comprendre, mais tout à fait la façon dont il devrait être fait pour rester sain d'esprit dans une grande application.


1

edge est une application de taille moyenne présentant la structuration d'une application avec Clojure, ClojureScript, Component, Yada, Aero et Boot.


0

Clojure est encore trop jeune et une cible mouvante pour avoir des applications de taille moyenne avec encore du code source disponible.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.