2011-09-14 38 views
6

Tôi đang sử dụng cabal để tải xuống các gói Haskell.Tên gói Hackage được ánh xạ tới tên 'cài đặt cabal' như thế nào?

Các công trình sau đây:

> cabal install JSON 

Nó được Text.JSON

Tuy nhiên, điều này không:

> cabal install Data.List.Key 
cabal: "Data.List.Key" is not valid syntax for a package name or package 
dependency. 

vấn đề cú pháp là gì đây? Làm thế nào để làm cho cabal có được Data.List.Key? Nói chung, đối với một gói có tên X.Y, tên nào cần cabal install cần để tìm gói? (Tôi nhầm lẫn lý do tại sao cabal install JSON nhận được Text.JSON và không phải Foobarbaz.JSON)

+3

Tên được sử dụng chỉ là tên của gói trên hackage. Đối với trường hợp của bạn 'cabal install utility-ht' sẽ hoạt động tốt. http://hackage.haskell.org/package/utility-ht-0.0.7 – is7s

+2

Tôi nghĩ rằng sự nhầm lẫn là những gì Haskell gọi một ** tên mô-đun ** là nhiều hơn hoặc ít hơn giống như những gì Java (và có lẽ các ngôn ngữ khác) gọi tên ** gói **. Một mô-đun Haskell giống như một gói Java, trong khi một gói Haskell giống với cái mà thế giới Java gọi là một thư viện hoặc một dự án. – MatrixFrog

+0

@MatrixFrog - vâng, đó là điều khiến tôi khó hiểu. Cảm ơn! –

Trả lời

12

Lệnh cabal install sử dụng tên gói. Tên gói khác với tên mô-đun. Nếu bạn nhìn vào hackage page for the text package, bạn sẽ thấy rằng tên gói là "văn bản", nhưng nó xuất khẩu một mô-đun gọi là Data.Text (trong số những người khác). Gói có thể xuất bất kỳ số lượng mô-đun nào và không cần phải có bất kỳ mối quan hệ nào giữa tên của gói và tên của mô-đun mà nó xuất.

Nếu bạn biết một gói mình muốn, nhưng bạn không biết mô-đun đã xuất, hãy xem trang hackage cho gói đó. Để thực hiện việc này, tôi truy cập "http://hackage.haskell.org/package/" trong trình duyệt của mình. Tôi đã đến đó rất nhiều lần, nó tự động hoàn thành rất nhanh, sau đó tôi thêm tên gói vào cuối url đó. Nếu tôi không biết tên gói chính xác, thì tôi chỉ cần truy cập trang đó và tìm kiếm danh sách gói cho những gì tôi muốn.

Tình huống trò chuyện mà bạn biết bạn muốn mô-đun nào nhưng không biết gói nào cung cấp nó khó hơn một chút. Trong trường hợp này, tôi dựa vào hai công cụ tìm kiếm Haskell tuyệt vời: HoogleHayoo.

+1

Ngoài ra, một tìm kiếm đơn giản của Google với 'site: hackage.haskell.org' thường thực hiện công việc tìm kiếm gói phù hợp. (Mặc dù do PageRank nó có xu hướng hướng bạn đến các phiên bản cũ hơn của các gói). – hammar

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