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
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.
Tham chiếu của tôi là alway Structure of a Haskell project và How 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
và -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:
- 1. Bạn cấu trúc dự án iPhone XCode như thế nào?
- 2. Cấu trúc dự án ruby lý tưởng
- 3. Làm thế nào để cấu trúc dự án Node/Angular/Socket.io?
- 4. Làm thế nào để "giải nén" một cấu trúc trong haskell
- 5. Làm thế nào để bạn cấu trúc một mô-đun stateful trong Haskell?
- 6. Làm thế nào để cấu hình một dự án ASP.NET MVC để làm việc với Boo
- 7. Làm thế nào để cấu trúc một dự án trong Winforms bằng cách sử dụng mô hình MVP?
- 8. Làm thế nào để bạn cấu trúc các thử nghiệm NUnit của bạn trên một dự án lớn?
- 9. Làm thế nào để vượt qua một mảng cấu trúc đến một mảng cấu trúc?
- 10. Làm thế nào để lưu trữ một cấu trúc bên trong một cấu trúc trong đi?
- 11. Làm cách nào để cấu trúc thư mục thử nghiệm dự án trong Android Studio?
- 12. Làm thế nào để một phiên bản kiểm soát cấu hình của một dự án TeamCity?
- 13. Tổ chức và cấu trúc tài nguyên dự án Xcode
- 14. Thêm gói vào cấu trúc dự án Java
- 15. DDD, NHibernate và Cấu trúc dự án/Đặt tên
- 16. Làm thế nào để có nhiều dự án truy cập cùng một dự án Entity Framework?
- 17. django: cách đánh giá dự án tái cấu trúc
- 18. Cấu trúc Dự án Web Java Thực tiễn Tốt nhất
- 19. Tôi nên cấu trúc các dự án phức tạp như thế nào trong C?
- 20. /var/www/cấu trúc thư mục cho dự án PHP
- 21. Cách tạo cấu trúc dự án Visual Studio C++ khớp với cấu trúc hệ thống tệp?
- 22. Thiết lập cấu trúc thư mục dự án EmberJS?
- 23. bình: làm thế nào để kiến trúc sư dự án với nhiều ứng dụng?
- 24. dự án Java ước cấu trúc thư mục
- 25. Tích hợp Heroku và Github (cách cấu trúc dự án)
- 26. Làm thế nào để gán một cấu trúc C inline?
- 27. Làm thế nào để lát một mảng cấu trúc?
- 28. Làm thế nào để cấu hình slf4j + logback trong một dự án Maven đa mô-đun?
- 29. Hướng dẫn về cấu trúc dự án vợt lớn
- 30. Làm thế nào để cấu trúc hạt nhân OpenCL lớn?
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
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
Đã 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