如何使用 runhaskell 取消隐藏 ghc 库

How can I unhide ghc library using runhaskell

我正在使用 runhaskell 构建简单的脚本,我尝试使用 ghc-7.10.2 中的 FastString。只需:

import FastString

main = putStrLn "Hello SO"

运行 它与 runhaskell Main.hs 导致错误:

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.

我知道我可以使用 cabal 构建它并指定 ghc 作为依赖项,但我确实需要使用 runhaskell.

如何使用 runhaskell 取消隐藏 ghc 库?

TL;DR:

$ ghc-pkg expose ghc

嗯,runhaskell 基本上是 runghc 的包装,而 runghc 基本上是 ghc。它们都遵循相同的规则:它们只能从您配置的数据库中导入 exposed 包。

使用ghc-pkg describe {package-name},可以获得关于某个包的信息。这里重要的字段是exposed:

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

如您所见,包没有公开(因此它是隐藏的)。使用 ghc-pkg expose,您可以取消隐藏它:

$ ghc-pkg expose ghc

请记住,如果您要更改系统范围的程序包数据库的设置,则需要权限。