2013-01-20 6 views
30

Attualmente sto provando a fare un progetto Haskell usando la metodologia Test Driven Development. In Java, possiamo creare un progetto ben strutturato contenente le cartelle src e bin, poi ci sono le cartelle principali e di test per il test delle unità con JUnit. Mi stavo solo chiedendo c'è un modo standard per ottenere una tale struttura in Haskell? Una cartella per l'origine di una cartella per binario e nella cartella di origine due cartelle una per testarne una per l'origine principale.Come strutturare un progetto Haskell?

risposta

2

La risposta moderna a questo è usare The Haskell Tool Stack. Questo strutturerà il progetto per te usando le impostazioni predefinite sane.

24

Il mio riferimento è sempre Structure of a Haskell project e How to write a Haskell program che spiegano alcuni valori predefiniti che la comunità sembra più o meno seguire. Ha funzionato bene per me finora ma i miei progetti non sono stati ancora molto grandi.

Ciò che è suggerito in Structure of a Haskell project suona simile a quello che hai delineato nel tuo post con alcune piccole modifiche come la cartella di test si trova nella stessa directory della cartella src.

Edit:

cabal init genererà una quantità minima per voi tra cui il file cabala con dipendenze rilevanti se si dispone di tutti i file con le importazioni, almeno. È un ottimo inizio, ma solo una parte di ciò che stai cercando.

Idealmente come un progetto cresce il file cabale e la gerarchia di directory verrebbe automaticamente aggiornata, non sono a conoscenza di alcun strumento reso pubblico che lo farà comunque. È sulla mia lista forse un giorno, come sono sicuro che sia per molti altri.

-odir e -hidir possono essere utilizzati con ghc per inserire i file * .o e * .hi in directory separate. Si può leggere di più in GHC user guide's section on separate compilation)

Edit2:

Altri importanti messaggi sovrapposti /:

+0

Grazie per la risposta. In java, posso usare Maven per generare automaticamente tutte le cartelle necessarie e in ruby ​​on rails il comando "rails new ProjectName" farà lo stesso, sto solo pensando poiché questa è un'attività comune, forse c'è un comando in Haskell questo fa – HHC

+0

Anche quando si usa ghc per compilare un file .hs, qual è il modo migliore per compilare e lasciare tutti i file .hs in una cartella tutti i file intermedi (.o .hi ecc.) In un'altra cartella e il file di esecuzione in ancora un'altra cartella? – HHC

+0

Commento modificato per una risposta poiché era longevo e ha beneficiato della formattazione. – Davorak