2010-05-15 31 views
7

Tôi sắp sẵn sàng tải gói đầu tiên lên Hackage!Gói Haskell nào của tôi có thể phụ thuộc vào gói nào?

Tôi có điều này trong hstest.cabal tôi:

Executable hstest 
     Main-Is:  hstest.hs 
     Build-Depends: base, mtl, directory, ghc, ghc-paths, random, QuickCheck 

Tôi hiểu rằng đó là hình thức xấu chỉ đơn giản là danh sách những gói gói của tôi phụ thuộc vào; thay vào đó, tôi nên nêu rõ các phiên bản của các gói này là cần thiết.

Các phiên bản tôi đã cài đặt là

  • cơ sở = 4.1.0.0
  • mtl = 1.1.0.2
  • directory = 1.0.0.3
  • GHC = 6.10.3
  • ghc- đường dẫn = 0.1.0.5
  • ngẫu nhiên = 1.0.0.1
  • QuickCheck = 1.2.0.0

Có cách nào dễ dàng để tìm ra phiên bản có thể chấp nhận sớm nhất của từng gói này mà gói của tôi thực sự cần? (nghĩa là không cài đặt nhiều phiên bản lỗi thời và thử nghiệm từng phiên bản một?)

Phiên bản nào trong tương lai của những gói này tôi có thể giả định gói của mình có thể phụ thuộc?

Trả lời

5

Có một cách dễ dàng để tìm hiểu những gì các phiên bản sớm nhất có thể chấp nhận của mỗi người trong số những gói gói của tôi thực sự cần

Không, không có công cụ cho điều đó.

Phiên bản tương lai của những gói này tôi có thể giả định gói của mình có thể phụ thuộc vào?

Cách an toàn nhất là theo dõi the package versioning policy, chỉ nói dựa trên các phiên bản gói mở rộng API. Đó là các phiên bản của biểu mẫu: A.B.*. Theo các tiểu bang chính sách:

Để giảm thiểu vỡ khi các phiên bản gói mới được phát hành, bạn có thể sử dụng phụ thuộc mà không nhạy cảm với những thay đổi phiên bản nhỏ (ví dụ foo> = 1.2.1 & & < 1.3).

Vì vậy, bạn sẽ làm điều gì đó như:

QuickCheck >= 1.2 && < 1.3 

Bây giờ, thử nghiệm có thể tiết lộ giới hạn thấp hơn hoặc cao hơn vào những tính năng bạn thực sự sử dụng.

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