2015-08-18 19 views
5

Vấn đề cụ thể của tôi là: Tôi chạy ngang qua tên throwT trong Module.hs trong một dự án Haskell lớn. Tôi muốn biết những gì throwT. Tôi cuối cùng quản lý để tìm một này ra như sau:Cách tìm gói, phiên bản, tài liệu cho tên Haskell

  1. lửa lên ghci cho dự án
  2. :load Module.hs Tiếp theo :i throwT throwT :: Monad m => e -> Control.Monad.Trans.Either.EitherT e m r -- Defined in ‘Data.EitherR’
  3. truy vấn hayoo cho Data.EitherR, mà trỏ vào gói errors
  4. ghc-pkg list errors cung cấp cho errors-1.4.7
  5. duyệt hackage tới tài liệu của phiên bản đó của t gói lỗi của anh ấy: throwT

Có cách nào tốt hơn để làm điều này, cả về mặt chính xác hơn (bước 3 không) và ít tẻ nhạt?

Trả lời

7

Bạn có thể sử dụng ghc-pkg find-module thay vì list, mang đến cho bạn phiên bản cài đặt của gói chứa các module ngay lập tức:

  1. cháy lên GHCi
  2. :load YourModule.hs, có :info trên giá trị của bạn
  3. Sử dụng tên mô-đun đã cho với ghc-pkg find-module.
  4. Bây giờ bạn biết chính xác mô-đun, gói và phiên bản.

Điều này vẫn buộc bạn phải kiểm tra tài liệu về hackage. Tuy nhiên, nếu bạn thêm documentation: true vào cấu hình cabal hoặc --enable-documentation, cabal sẽ tự động tạo tài liệu trong khi cài đặt gói đã cho. Sau đó, bạn có thể rút ngắn các thủ tục để

  1. cháy lên GHCi
  2. :load YourModule.hs, có :info trên giá trị của bạn
  3. Kiểm tra tài liệu địa phương để biết module tài liệu tham khảo.

Tài liệu cục bộ sẽ được lưu trữ trong thư mục cabal của bạn hoặc nếu bạn đang ở trong hộp cát, trong .cabal-sandbox/share/doc/<plattform>/index.html.

+0

Bạn cũng có thể xây dựng cơ sở dữ liệu hoogle cục bộ và sử dụng hoogle cục bộ, nhưng tôi không có thời gian để xây dựng và kiểm tra điều này vào lúc này. Sau đó, phải dễ dàng như 'throw -' địa phương hoogle. – Zeta

1

Lý tưởng nhất, mỗi mô-đun rõ ràng nhập mọi chức năng mà nó sử dụng. Giả sử rằng throwT được sử dụng trong Module.hs, nhưng không được xác định trong đó, điều đầu tiên cần kiểm tra là nếu có câu lệnh nhập ở trên cùng của Module.hs nhập rõ ràng hàm, trông giống như import Some-Module (throwT, someOtherFunction, possiblyAnotherFunction), trong đó Some-Module là mô-đun được nhập khẩu và các hàm trong dấu ngoặc đơn là những thứ duy nhất được nhập từ mô-đun đó (đây là những gì nhập khẩu rõ ràng). Sau đó, bạn sẽ tìm thấy Some-Module và tìm định nghĩa của throwT.

+0

Điều này không thực sự trả lời câu hỏi. Thay vào đó, nó cung cấp các bước cách tác giả có thể giúp người dùng của họ tránh xâm nhập vào tình huống. – Zeta

+0

Tôi đã viết điều này từ sự hiểu biết rằng OP có thể hoặc 'có thể không' đã kiểm tra cho nhập khẩu rõ ràng đầu tiên. Điều đó nói rằng, việc sử dụng các lỗi danh sách 'ghc-pkg' có thể ngăn cản chúng khỏi việc không thực hiện điều này, điều mà tôi không nghĩ đến. –

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