Hoje meu time teve hackday, e nos divertimos passando um codigo legadão (2002) para Clojure. de 54 classes para 3 namespaces com 5 funções cada. Agora falta por isso em produção pra ontem
Que show @jnaomi, onde trabalho sei que não consigo fazer nada em Clojure, até por que a galera não curte JVM, gostam de Python, mas vou tentar fazer todos os meus novos projetos com Clojure
Olá pessoal, tudo bom? meu nome é Matheus, eu trabalho há bastante tempo com desenvolvimento, mas nos últimos anos que comecei a estudar funcional e escolhi clojure como minha linguagem para praticar os estudos, (fiz bastante coisa com JS funcional tb). Atualmente estou desenvolvendo um projetinho pessoal, e me deparei com algumas questões conceituais. Quando estava estudando funcional em JS, eu usava bastante um projeto de implementações de monads para tornar o meu código mais fácil de compor e isolar os side effects. No meu projeto atual em clojure eu leio um arquivo texto, faço o parsing desse arquivo e salvo as informações em um banco, me deparei com 2 questões: 1) não sei como isolar os side effects de uma forma clojure-like, procurei sobre uso de monads em clojure, mas não achei muito material e nada que fosse esclarecedor. 2) Ao parsear o arquivo, eu posso encontrar alguns problemas de conversão (para data, por exemplo). Qual seria a melhor forma de tratar esses erros? Em JS eu recorreria novamente às monads, não sei bem como tratar isso em clojure.
desculpe o textão 😅
se precisarem do código, ele está aqui: https://github.com/ashton/investtrack/blob/master/src/investtrack/command.clj
aceito qualquer tipo de feedback e desde já agradeço a ajuda 😄
@matheusashton Tudo bem? Normalmente para fazer parser de arquivos eu uso o Instaparse, você define sua gramática e ele te entrega a estrutura pronta. Para processar os dados eu uso defmulti
que deixa o código muito limpo no processamento dos tags. Em relação aos erros, o Insta já processa a gramática e valida diretamente indicando onde está o erro pela regra que você definiu. Então, essa é minha dica.
opa valeu 😉 eu tinha visto esse cats, achei bem bacana, mas é comum o uso dessas monads em clojure?
eu vi uns artigos criticando por clojure não ser tipado etc
@matheusashton Você pode usar a notação ^ para otimizar a compilação para rodar mais rápido, ou usar http://typedclojure.org/, mas não sei se é muito usado, eu não uso.
para validação de dados usa-se o https://clojure.org/guides/spec
valeu! vou dar um aolhada