
Olá! Tenho algumas coisas que gostaria de dividir. Primeiro, não tem ninguém no Slack e pouquíssimas pessoas no IRC, o que me deixa triste. Entrem lá pra trocar ideia de programação funcional. - - - O site haskellbr.com foi atualizado com a descrição do próximo meetup. Gostaria de ter um blog configurado e começar a produzir conteúdo. Infelizmente isso não foi possível nesse fim-de-semana. - - - Criei um fork do site haskell.org em https://github.com/haskellbr/hl e comecei o trabalho de internacionalização com i18n. Essa é uma issue aberta no repositório global (https://github.com/haskell-infra/hl/issues/4), se adicionarmos uma tradução do site para pt-br estaremos preparando o território para outras comunidades em outros países para fazer o mesmo. Além disso, o site é escrito usando Yesod e acho que o suporte a i18n do framework é muito particular ao Haskell e muito bom, então é tecnicamente divertido. - - - MissingH é uma ótima biblioteca cheia de funções úteis que não estão disponíveis no `Prelude`. Funções como `split :: String -> String -> [String]` ou `join :: [a] -> [[a]] -> [a]`, acho que de certa forma, poderia se pensar nela como um `lodash`/`underscore` do Haskell. Na minha opinião, a biblioteca tem o problema de ser muito grande. Nem sempre vale a pena a incluir em projetos, por causa do aumento no tempo de compilação e tamanho do binário que seu uso causa. Resolvi fazer um fork com o intuito de quebrar o pacote e mitigar esse problema ao decidir. Esse projeto pode ser interessante para pessoas querendo aprender Haskell fazendo coisas úteis. A ideia é simples: separar o pacote `missingh` em vários pacotes menores. Decidi seguir uma implementação um pouco mais interessante, escrever um pacote `package-splitter` que, dado um pacote ([x] == feito): - [x] Lê seu manifest `.cabal` - [x] Extrai os módulos existentes no pacote - [ ] Extrai todas as dependências de cada um desses módulos - [ ] Gera pacotes menores baseados nessa informação (essa é a parte mais difícil) Ajuda que fiz algo muito parecido aos primeiros 3 passos com a ajuda do André Barnabá (asakeron) [1] em `stack-run-auto` [2] muito recentemente. Então só o quarto passo deve dar um pouco mais de trabalho. Acho que é divertido, não sei se já viram aquele thread de e-mails da lista de Erlang onde o Joe Armstrong questiona a existência de módulos em uma linguagem de programação e discute um gerenciador de pacotes baseado em funções. Ia ser muito legal ter isso e acho que a forma como Haskell se organiza faz a criação de ferramentas ao redor de análise estática muito mais fácil. Espero ter uma versão inicial de um programa que separe pacotes do cabal automaticamente logo. Comentem o que acham dessa ideia. - - - Sobre o `stack-run-auto`, acho que vale dizer que ele foi completamente portado para Haskell e vejo algum potencial para melhorar o que existe nele. A próxima versão do `stack` deve ter fall-through do executável no estilo do `git` [3], o que abre a porta para escrever plugins como esse e extender o toolset da linguagem. P.S. isso estava no HackerNews e é sensacional (datomic no nubank) https://youtu.be/7lm3K8zVOdY Yamada [1] - https://github.com/asakeron [2] - https://github.com/yamadapc/stack-run-auto [3] - https://github.com/commercialhaskell/stack/pull/1434