Vì mọi thứ thay đổi quá nhanh, tôi đã đăng câu hỏi này để hy vọng rằng cách đồng ý cộng đồng để bắt đầu dự án Haskell có thể được làm rõ. Hãy tưởng tượng tôi có hai dự án riêng biệt:Quy trình làm việc tiêu chuẩn cập nhật để xây dựng các dự án Haskell là gì?
Dự án # 1: Square, thư viện mà số ô vuông. Không có deps.
-- Square.hs module Square where square :: Num a => a -> a square x = x * x
Dự án # 2: cạnh huyền, thư viện và thực thi mà thấy chiều dài nhất của một tam giác vuông góc. Phụ thuộc vào # 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
Bắt đầu với một máy tính với GHC 7.10.2, Stack và Cabal cài đặt, và một thư mục duy nhất, ~/OrganizeMe
, chứa ~/OrganizeMe/Square.hs
, ~/OrganizeMe/Hypotenuse.hs
và ~/OrganizeMe/Main.hs
, như đã trình bày ở trên - một bộ hoàn chỉnh các lệnh unix mà Haskeller có kinh nghiệm sẽ sử dụng để kiến trúc các dự án đó là gì? Điều đó bao gồm:
Sắp xếp cây thư mục của các dự án đó;
định cấu hình
Stack
/Cabal
/etc
(vàgit
, tùy chọn);xây dựng/cài đặt chúng cục bộ;
xuất bản lên
Hackage
/Stackage
.
Tôi đã đọc toàn bộ tài liệu về Stack và một số hướng dẫn về Cabal. Bây giờ tôi đã biết về nhiều tính năng, nhưng tôi vẫn không biết cách tổ chức các cây thư mục. Tôi có cần một thư mục cho ngăn xếp và nhiều thư mục con cho các dự án, mỗi thư mục có tệp '.cabal' không? Hoặc những gì thay vào đó? Làm thế nào tôi có thể liên kết các dự án nhập khẩu địa phương từ eachother? Một ví dụ vững chắc hy vọng có thể làm rõ những câu hỏi và những câu hỏi khác. – MaiaVictor
Stack/Stackage là tốt đẹp. có sự ủng hộ thương mại và mọi thứ. –
Trên điện thoại di động của tôi mà không có nhiều thời gian, nhưng bạn đã có ý tưởng đúng. Một thư mục con cho mỗi thư viện, mỗi thư mục có tệp cabal và tham chiếu từng thư mục từ tệp stack.yaml. Các repo wai cung cấp một ví dụ vững chắc của điều này –