[haskell-br] Haskell sem declarar dependencias

Pedro Yamada tacla.yamada at gmail.com
Tue Nov 24 07:36:44 UTC 2015


Olá grupo,

Algo que me incomoda muito na programação hoje é a fricção entre
escrever um programa e o rodar. Acho que há muitas ferramentas que
ajudam muito nisso, Docker sendo uma impossível de ignorar.

No ecossistema de Haskell é difícil apenas escrever e rodar scripts
sem criar novos projetos, porque usar um banco-de-dados de pacotes
global no seu sistema deixa de funcionar muito rápido. Acho que a
introdução do `stack` mudou muito a experiência. Se antes a solução
era usar sandboxes com o cabal e perder tempo esperando para que
muitos pacotes compilassem, agora para uma boa parte dos projetos
basta rodar `stack build` e se terá caching de dependências, escolha
automática da versão do compilador, escolha automática de pacotes
compatíveis usando o stackage etc.

Tentei escrever uma prova de conceito, usando um pouco de bash, que
dado um arquivo:
- Extraí os módulos importados
- Pesquisa no Hayoo pelos módulos afim de encontrar o pacote no qual
estão publicados
- Pesquisa no Hackage pelas dependências de cada pacote
- Passa tudo isso para dentro to comando `stack runghc` junto com o arquivo

O código está disponível em: https://github.com/yamadapc/stack-run-auto

Acho que é só uma prova de conceito, mas gostaria de ser capaz de
escrever o código e ter todos esses passos resolvidos para mim. O
Emacs faz um pouco disso hoje, mas parece que só para alguns pacotes.

Cada uma das etapas é um pequeno script (a maior parte bash e um pouco
de node para extrair dados de HTML, já que não há uma API do Hackage).
Acho que o mais útil é o `module-package`. Recebe um módulo (como
`System.Console.AsciiProgress` e imprime um pacote como
`ascii-progress`). Quero isso no meu editor para adicionar as
dependências no `projeto.cabal` automaticamente quando um arquivo é
salvo e um import foi adicionado.

Me anima ver ferramentas como Hayoo e Hoogle que nos deixam pesquisar
por módulos, funções etc. em todos os pacotes publicados no Hackage.

Acho que é possível diminuir o custo de escrever Haskell para tarefas rápidas.

Talvez seja útil para vocês ou se interessem em implementar a parada direito :D

- - -

Não sei como está o interesse em Haskell depois do nosso encontro, mas
acho que valeria a pena:
- Escrever conteúdo em português
- Explorar a ideia de workshops a la nodeschool.io (a comunidade de
node.js escreveu um framework para tutoriais:
https://github.com/workshopper/workshopper - essa foi uma ideia que
queria ter aprofundado no começo do ano, uma pequena parte de
interface para isso está em https://github.com/yamadapc/list-prompt,
mas talvez seja melhor só usar a ferramenta do node.js, que é
sensacional)
- Reviver uma sala de chat em português sobre Haskell. A comunidade
nodebr recentemente abriu uma conta no Slack, o que foi muito bem
sucedido, muito mais pessoas estão ativas do que estavam no IRC e
tenho uma instância de https://github.com/ekmartin/slack-irc rodando
para um não excluir o outro.
- Reviver um site da comunidade. Tenho o domínio haskellbr.com e um
pouco de código escrito. Parei no meio porque comecei a pensar que
talvez fosse mais legal adicionar internacionalização para o
haskell.org do que escrever outra página. Queria: um blog, uma forma
fácil de entrar na lista, uma forma fácil de entrar num chat (IRC ou
Slack com https://github.com/rauchg/slackin)

Queria um grupo de trabalho para open-source (não só Haskell). Nem que
seja só um office-hours da vida.

Yamada


More information about the haskell-br mailing list