2015-12-03 16 views
8

Tôi đang tạo kịch bản đơn giản với runhaskell và tôi cố gắng sử dụng FastString từ ghc-7.10.2. Đơn giản chỉ cần:Làm cách nào tôi có thể bỏ ẩn thư viện ghc bằng cách sử dụng runhaskell

import FastString 

main = putStrLn "Hello SO" 

chạy nó với runhaskell Main.hs kết quả do lỗi:

Main.hs:1:8: 
    Could not find module ‘FastString’ 
    It is a member of the hidden package ‘ghc-7.10.2’. 
    Use -v to see a list of the files searched for. 

Tôi biết rằng tôi có thể xây dựng nó với cabal và chỉ định ghc như phụ thuộc, nhưng tôi thực sự cần phải làm điều đó với runhaskell.

Tôi làm cách nào để ẩn thư viện ghc bằng cách sử dụng runhaskell?

Trả lời

5

TL; DR:

$ ghc-pkg expose ghc 

Vâng, runhaskell cơ bản là một wrapper quanh runghc, và về cơ bản là runghcghc. Tất cả đều tuân theo các quy tắc tương tự: họ chỉ có thể nhập tiếp xúc với các gói từ cơ sở dữ liệu được định cấu hình của bạn.

Sử dụng ghc-pkg describe {package-name}, người ta có thể nhận thông tin về một gói nhất định. Trường quan trọng ở đây là exposed:

$ ghc-pkg describe ghc | grep expose 
exposed: False 
exposed-modules: 

Như bạn thấy, gói không được hiển thị (do đó, nó bị ẩn). Sử dụng ghc-pkg expose, bạn có thể bỏ ẩn:

$ ghc-pkg expose ghc 

Hãy nhớ rằng bạn cần quyền nếu bạn thay đổi cài đặt của cơ sở dữ liệu gói rộng của hệ thống.

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