[haskell-br] haskellbr.com, haskell.org em pt-br, fork da biblioteca MissingH, stack-run-auto

Pedro Yamada tacla.yamada at gmail.com
Mon Nov 30 21:38:40 UTC 2015


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


More information about the haskell-br mailing list