2013-01-20 45 views
30

Tôi hiện đang cố gắng thực hiện dự án Haskell bằng phương pháp Phát triển thử nghiệm theo hướng. Trong Java, chúng ta có thể tạo một dự án có cấu trúc độc đáo chứa các thư mục src và bin, sau đó có các thư mục chính và kiểm tra để kiểm thử đơn vị với JUnit. Tôi đã tự hỏi là có một cách tiêu chuẩn để có được một cấu trúc như vậy trong Haskell? Một thư mục cho nguồn một thư mục cho nhị phân, và trong thư mục nguồn hai thư mục một để kiểm tra một cho nguồn chính.Làm thế nào để cấu trúc một dự án Haskell?

Trả lời

2

Câu trả lời hiện đại này là sử dụng The Haskell Tool Stack. Điều này sẽ cấu trúc dự án cho bạn bằng cách sử dụng mặc định sane.

24

Tham chiếu của tôi là alway Structure of a Haskell projectHow to write a Haskell program để giải thích một số mặc định mà cộng đồng dường như ít theo dõi hơn. Nó đã làm việc tốt cho tôi cho đến nay nhưng các dự án của tôi vẫn chưa được lớn lắm.

Nội dung được đề xuất trong Structure of a Haskell project có vẻ tương tự như những gì bạn đã nêu trong bài đăng của mình với một vài sửa đổi nhỏ như thư mục thử nghiệm nằm trong cùng thư mục với thư mục src.

Edit:

cabal init sẽ tạo ra một số tiền tối thiểu cho bạn bao gồm cả các tập tin cabal với phụ thuộc có liên quan nếu bạn có một bất kỳ tập tin với hàng nhập khẩu ít nhất. Đó là một khởi đầu tuyệt vời nhưng chỉ là một phần của những gì bạn đang tìm kiếm.

Lý tưởng nhất là dự án phát triển tệp cabal và hệ thống phân cấp thư mục sẽ tự động được cập nhật, tôi không biết bất kỳ công cụ nào được công khai sẽ thực hiện việc này. Đó là trong danh sách có thể một ngày của tôi vì tôi chắc chắn rằng nó dành cho nhiều người khác.

-odir-hidir có thể được sử dụng với ghc để đặt các tệp * .o và * .hi vào các thư mục riêng biệt. Bạn có thể đọc thêm ở GHC user guide's section on separate compilation)

Edit2:

khác liên quan/bài viết chồng chéo:

+0

Cảm ơn bạn đã trả lời. Trong java, tôi có thể sử dụng maven để tự động tạo tất cả các thư mục cần thiết và trong ruby ​​trên đường ray lệnh "rails new ProjectName" sẽ làm tương tự, tôi chỉ nghĩ vì đây là một nhiệm vụ phổ biến, có thể có một số lệnh trong Haskell điều đó. – HHC

+0

Ngoài ra khi sử dụng ghc để biên dịch tệp .hs, cách tốt nhất để biên dịch và cho phép tất cả .hs nằm trong một thư mục tất cả các tệp trung gian (.o .hi etc.) trong một thư mục khác và tệp thi hành chưa một thư mục khác? – HHC

+0

Đã chỉnh sửa nhận xét cho câu trả lời vì nó đã lâu và được hưởng lợi từ định dạng. – Davorak

Các vấn đề liên quan