Ero uno sviluppatore Java per molto tempo, ma recentemente mi sono unito a un team di Haskell. Nel mondo Java, se hai un grande progetto, con diversi team che ci lavorano, un approccio comune è quello di utilizzare un server artefatto come Maven per facilitare e accelerare lo sviluppo. Numerosi strumenti di costruzione, come Ant, Maven, Gradle, possono costruire il progetto e caricare un file jar sul server degli artefatti che può essere utilizzato dal resto del team senza problemi. Pertanto, suddividendo il progetto in sottoprogetti più piccoli, il tempo di costruzione viene drasticamente ridotto.
Sul lato Haskell, stiamo usando cabal
per costruire il progetto. Il nostro progetto richiede circa 10-15 minuti per essere sviluppato senza ottimizzazione. Ci vogliono alcune ore se l'ottimizzazione del compilatore è attiva, il che è doloroso.
Mi chiedo come possiamo fare la stessa cosa che facciamo qui in Java. Esiste un modo semplice per compilare e caricare il file binario dei pacchetti (librerie) su un server artefatto e utilizzare i file binari predefiniti al momento della compilazione? So che poiché Haskell genera codice macchina (piuttosto che codice byte in Java) potrebbero esserci problemi di compatibilità, ma probabilmente possiamo avere binari diversi per architetture / sistemi operativi diversi memorizzati sul server artefatto.
cabal
, GHC
, Test.Framework
o il linker.