Eu era desenvolvedor Java há muito tempo, mas recentemente entrei para uma equipe da Haskell. No mundo java, se você tiver um projeto grande, com várias equipes trabalhando nele, uma abordagem comum é usar um servidor de artefato como o Maven para facilitar e acelerar o desenvolvimento. Várias ferramentas de construção, como Ant, Maven, Gradle, podem criar o projeto e fazer upload de um arquivo jar para o servidor de artefato que pode ser usado pelo restante da equipe sem problemas. Portanto, dividindo o projeto em subprojetos menores, o tempo de construção também é drasticamente reduzido.
No lado Haskell, estamos usando cabal
para construir o projeto. Nosso projeto leva de 10 a 15 minutos para ser desenvolvido sem otimização. Demora algumas horas se a otimização do compilador estiver ativada, o que é doloroso.
Eu me pergunto, como podemos fazer a mesma coisa que fazemos em Java aqui. Existe uma maneira fácil de compilar e fazer upload do binário dos pacotes (bibliotecas) em um servidor de artefato e usar os binários pré-criados no momento da construção? Eu sei que, como o Haskell gera código de máquina (em vez de código de bytes em Java), pode haver problemas de compatibilidade, mas provavelmente podemos ter binários diferentes para diferentes arquiteturas / SOs armazenados no servidor de artefato.
cabal
, GHC
, Test.Framework
ou o ligador.