Da sich die Dinge so schnell ändern, habe ich diese Frage gestellt, damit hoffentlich der von der Community vereinbarte Weg, ein Haskell-Projekt zu starten, geklärt werden kann. Stellen Sie sich vor Ich habe zwei separate Projekte:Was ist der aktuelle Standardworkflow für den Bau von Haskell-Projekten?
Projekt # 1: Quadrat, die Bibliothek, die Quadrate Zahlen. Keine Depressionen.
-- Square.hs module Square where square :: Num a => a -> a square x = x * x
Projekt # 2: Hypotenuse, die Bibliothek und die ausführbare Datei, die die längste Seite eines rechtwinkligen Dreiecks findet. Hängt davon ab, # 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
Beginnend mit einem Computer mit GHC 7.10.2, Stapel und Cabal installiert, und ein einzelnes Verzeichnis, ~/OrganizeMe
, mit ~/OrganizeMe/Square.hs
, ~/OrganizeMe/Hypotenuse.hs
und ~/OrganizeMe/Main.hs
, wie oben dargestellt - Was ist ein kompletter Satz von Unix-Befehlen, den ein erfahrener Haskeller verwenden würde, um diese Projekte zu entwerfen? Dazu gehören:
den Verzeichnisbaum dieser Projekte organisieren;
Konfigurieren
Stack
/Cabal
/etc
(git
und gegebenenfalls);sie lokal aufbauen/installieren;
Veröffentlichung zu
Hackage
/Stackage
.
Ich habe die gesamte Dokumentation für Stack und einige Cabal Tutorials gelesen. Jetzt weiß ich über viele Funktionen, aber ich weiß immer noch nicht, wie die Verzeichnisbäume organisiert sein sollen. Benötige ich ein Verzeichnis für den Stapel und mehrere Unterverzeichnisse für Projekte, jedes mit einer '.cabal' Datei? Oder was stattdessen? Wie kann ich lokale Projekte miteinander verknüpfen? Ein hoffnungsvolles Beispiel kann diese und andere Fragen klären. – MaiaVictor
Stack/Stackage ist nett. hat kommerziellen Rückhalt und alles. –
Auf meinem Handy ohne viel Zeit, aber Sie haben die richtige Idee. Ein Unterverzeichnis pro Bibliothek mit jeweils einer Cabal-Datei und Verweis auf jedes Verzeichnis aus der Datei stack.yaml. Die Wai Repo bietet ein solides Beispiel für diese –