Poiché le cose cambiano così velocemente, ho postato questa domanda, quindi spero che il modo concordato dalla comunità per avviare un progetto Haskell possa essere chiarito. Immaginate Ho due progetti distinti:Qual è il flusso di lavoro standard aggiornato per la creazione di progetti Haskell?
progetto # 1: Square, la libreria che piazze numeri. No deps.
-- Square.hs module Square where square :: Num a => a -> a square x = x * x
progetto # 2: Hypotenuse, la biblioteca e eseguibile che trova il lato più lungo di un triangolo rettangolo. Dipende # 1:
-- Hypotenuse.hs module Hypotenuse where import Square hypotenuse :: Floating a => a -> a -> a hypotenuse x y = sqrt $ square x + square y
,
-- Main.hs import System.Environment import Hypotenuse main = do [x,y] <- fmap (map read) getArgs print $ hypotenuse x y
Partendo da un computer con GHC 7.10.2, Pila e Cabal installato, e una singola directory, ~/OrganizeMe
, contenente ~/OrganizeMe/Square.hs
, ~/OrganizeMe/Hypotenuse.hs
e ~/OrganizeMe/Main.hs
, come presentato sopra - cos'è un set completo di comandi unix che un esperto Haskeller avrebbe usato per architettare quei progetti? Che comprende:
Organizzare l'albero delle directory di tali progetti;
configurazione
Stack
/Cabal
/etc
(egit
, opzionalmente);costruzione/installazione locale;
pubblicazione a
Hackage
/Stackage
.
Ho letto l'intera documentazione per Stack e alcuni tutorial Cabal. Ora conosco molte funzionalità, ma non so ancora come dovrebbero essere organizzati gli alberi delle directory. Ho bisogno di una directory per lo stack e più sottodirectory per i progetti, ognuno con un file '.cabal'? O cosa invece? Come posso collegare i progetti locali di importazione da entrambi? Un esempio solido di speranza può chiarire queste e altre domande. – MaiaVictor
Stack/Stackage è bello. ha un supporto commerciale e tutto –
Sul mio cellulare senza molto tempo, ma hai la giusta idea. Una sottodirectory per libreria, ciascuna con un file cabal, e fa riferimento a ogni dir dal file stack.yaml. Il repository wai fornisce un solido esempio di questo –