Aplicativo de amostra Clojure de tamanho médio?

96

Existe um aplicativo de amostra Clojure de tamanho médio que poderia ser usado como um exemplo de "melhores práticas" e uma boa maneira de ver como seria esse aplicativo em termos de código e organização de código? Um aplicativo da web seria particularmente interessante para mim, mas o mais importante é que o programa faça algo comumente útil (blog, rastreamento de bugs, CMS, por exemplo), e não algo matemático que eu nunca tive que implementar na vida real mundo (resolvendo o problema das N-rainhas, simulando a vida, gerando sequências de Fibonacci, e tal tarifa usual de linguagens de programação de função).

Obrigado!

foxdonut
fonte
Eu ia fazer exatamente a mesma pergunta. Isso me faz pensar como isso é prático no "mundo real"
ScArcher2
5
As pessoas estão muito asfixiadas neste "mundo real"
Rayne
Fiz um IRC Bot com ele, é uma linguagem perfeita para ele (desempenho não é um problema, plug-ins de hot-swapping, a saída está trivialmente relacionada à função de entrada). Para a maioria dos outros usos, não é muito bom. Muito desperdício de CPU e principalmente muito uso de memória, agitação de memória, perda de cache.
RokL

Respostas:

42

Eu recomendo o cow-blog de Brian Carper. De acordo com o autor, foi escrito com o seu propósito em mente.

Mac
fonte
Em 2018, o cow-blog não compilava seguindo as instruções. lein depsfalha com esta mensagem: `` `Retrieving gaka / gaka / 0.1.0 / gaka-0.1.0.pom from clojars Tentei usar o repositório HTTP inseguro sem TLS. Isso é quase certamente um erro; no entanto, em casos raros em que é intencional, consulte lein help faqpara obter detalhes. Tentei usar o repositório HTTP inseguro sem TLS. Isso é quase certamente um erro; no entanto, em casos raros em que for intencional, consulte lein help faqpara obter detalhes. `` `
Teodor
19

Se você navegar no código - fonte do clojure-contrib, poderá ver como as bibliotecas são implementadas no clojure.

Você também pode verificar " ClojureScript " na mesma árvore de origem.

Permite que o código escrito em um subconjunto muito pequeno de Clojure seja traduzido automaticamente para JavaScript.

O tradutor ClojureScript é um aplicativo Clojure completo.

Eu também recomendo verificar os exemplos de Port of Practical Common Lisp de Stewart Halloway para Clojure se você ainda não o fez.

Brian Gianforcaro
fonte
A biblioteca monolítica Clojure Contrib foi descontinuada em favor de um conjunto de novas bibliotecas contrib modulares que podem ser encontradas aqui: dev.clojure.org/display/doc/Clojure+Contrib (observe que Clojure mudou do repositório richhickey no Github para o repositório oficial de clojure)
Sean Corfield
15

Dê uma olhada no Compojure . É uma estrutura da web escrita em Clojure, portanto, permite que você escreva e execute (em um Jetty incorporado) aplicativos da web úteis em Clojure e também serve como um bom exemplo de um pedaço considerável de código Clojure do mundo real.

Está em desenvolvimento ativo e tem um Grupo do Google útil .

Christian Berg
fonte
1
Uma vez que a maior parte do código foi removido do Compojure Ring, pode ser o lugar para procurar agora.
mac
Muito do código de geração de HTML do Compojure agora faz parte do Hiccup, eu acredito ( github.com/weavejester/hiccup )
mikera
10

Confira a demonstração das formigas escrita pelo autor de Clojure, Rich Hickey:

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

Aqui estão algumas instruções interessantes para configurá-lo junto com um ambiente de desenvolvimento emacs:

http://riddell.us/clojure

Verifique também a apresentação de Rich que acompanha este código:

http://blip.tv/file/812787

pjb3
fonte
1
Eu continuo sendo redirecionado quando tento visualizar a fonte. Estranhamente, também não consigo encontrar através do Google.
AnnanFay
Parece que o link blip.tv está agora em youtube.com/watch?v=dGVqrGmwOAw e acho que a descrição do código começa em cerca de 1 hora e 24 minutos na apresentação.
Roger Allen
7

O próprio Clojure é um bom exemplo das melhores práticas do Clojure. Leia até o final do Core.clj, coisas boas.

Rayne
fonte
6

http://4clojure.com

4Clojure é um site de código aberto onde você pode resolver problemas de Clojure de preenchimento interativo.

dbyrne
fonte
5

Acho que o Compojure é provavelmente a melhor maneira de dar um exemplo. Duvido que seja um exemplo de "tamanho médio", mas provavelmente há subseções que são pequenas que funcionariam. Pelo menos, essa será minha abordagem. sorri

Além disso, verifique

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

que é um pequeno protótipo de cliente de lama construído em clojure, com a vantagem de ser totalmente independente e provavelmente muito simples, incluindo os conceitos envolvidos. Documentação, eh, está tudo bem, mas os conceitos no código estão intimamente ligados aos elementos de ação do MUD que são executados facilmente.

Kzqai
fonte
5

Estamos dois anos depois dessa pergunta e, embora ainda seja o início do ciclo de uma linguagem, Clojure está definitivamente sendo usado para um trabalho sério de produção. No World Singles, temos vários milhares de linhas de Clojure em produção que lidam com todos os tipos de tarefas de uso geral em nossa plataforma da web - escrevi sobre isso na minha série Real World Clojure .

Para alguns projetos de código aberto razoavelmente grandes - não exatamente aplicativos, mas infraestrutura de alto perfil - você pode olhar para Storm do Twitter e Cascalog do BackType (agora parte do Twitter). 4clojure.com foi mencionado como um aplicativo da web de código aberto, que também vale a pena dar uma olhada, mas observe o novo repositório github para 4clojure .

Sean Corfield
fonte
3

Um sinal positivo: há um artigo no InfoQ sobre "um dos primeiros relatórios publicados de Clojure sendo usado em uma implantação de produção em grande escala." Não parece ser aberto, mas pelo menos é um sinal de que o Clojure está sendo usado em um aplicativo de missão crítica no mundo real da produção. Um grande passo para a comunidade Clojure.

Jim Anderson
fonte
1

Só posso recomendar que você uma olhada no Pedestal , um framework web muito promissor, tanto do lado do servidor quanto do lado do cliente (onde facilita o ClojureScript). O gui é um pouco difícil de entender, mas é muito parecido com o que deveria ser feito para se manter sã em um aplicativo grande.

claj
fonte
1

edge é um aplicativo de tamanho moderado que mostra a estruturação de um aplicativo com Clojure, ClojureScript, Component, Yada, Aero e Boot.

Daniel Compton
fonte
0

Clojure ainda é muito jovem e um alvo móvel para ter aplicativos de tamanho médio com código-fonte disponível.

Marko
fonte