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