This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-12-09
Channels
- # adventofcode (201)
- # bangalore-clj (5)
- # beginners (90)
- # cider (1)
- # cljs-dev (3)
- # cljsrn (28)
- # clojure (128)
- # clojure-argentina (1)
- # clojure-brasil (15)
- # clojure-dev (9)
- # clojure-greece (18)
- # clojure-italy (11)
- # clojure-madison (1)
- # clojure-poland (19)
- # clojure-russia (28)
- # clojure-spec (33)
- # clojure-uk (26)
- # clojurescript (20)
- # core-async (2)
- # cursive (1)
- # datomic (2)
- # emacs (4)
- # figwheel (3)
- # fulcro (15)
- # graphql (7)
- # hoplon (1)
- # lein-figwheel (2)
- # lumo (2)
- # numerical-computing (3)
- # off-topic (9)
- # re-frame (13)
- # ring (1)
- # shadow-cljs (1)
- # unrepl (1)
- # vim (17)
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.
sobre (2), em clojure a galera gosta de usar exceptions 😞 eu normalmente recorro a either monad. tem uma lib legal com algumas monads implementadas e q é bem mais fácil de usar q o clojure.algo.monads
: https://github.com/funcool/cats
o suporte tá meio largado, mas ainda acho q vale a pena usar
sobre isolar side effects, normalmente é só organização de código msm (manter funções puras em namespaces separados das impuras). nunca vi nada muito diferente disso
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