在GHCI中使用import qualified

10

在 GHCI 中,是否可以使用类似于“import qualified”的等效方式来使用我们自己的模块?类似于 :m + qualified Data.List 这样的内容,当然是无法正常工作的。

谢谢。

2个回答

24

只需在 ghci 中键入 import qualified Data.Textimport qualified Data.Text as T,就像在代码中所做的那样。


6
请注意,这是在 GHC 7.0 中添加的。 - shachaf
抱歉,我是指我的自己的模块。 - vildric
2
@vildric,你认为你自己的模块有什么不同于别人的模块吗?只需使用“import qualified My.Own.Modules as MOM”导入,假设已安装了包含“My.Own.Module”模块的软件包或通过其他方式在作用域内。 - Thomas M. DuBuisson
对于你自己的模块,假设在工作目录下有一个名为MyModule.hs的文件,并且文件顶部有module MyModule where。只需键入import qualified MyModule即可完成。 - AJF

16

我不知道有什么好的方法可以满足你的需求,但你可以使用以下方式模拟:

  1. 首先,使用:load My/Module.hs加载你的模块。
  2. 使用:module - My.Module将其移出作用域。
  3. (可选) 使用import qualified My.Module as MM将其限定在作用域中。

GHCi知道的每个模块都是自动完全限定的,因此在步骤2之后,My.Module.value就可以正常工作。 只有在想要使用更短的前缀时才需要步骤3。

如果你想要一次性加载多个文件,:load也可以实现;

:load My/Module1.hs My/Module2.hs ... My/ModuleN.hs

这将有效地起作用。 它将把您置于*My.Module1的范围内,然后My.Module2My.ModuleN都将按照上述方式完全限定可用。

如需了解有关GHCi的更多信息,您可以随时查看GHC 用户指南,第2章:“使用GHCi”; 特别相关的章节是§2.2,“加载源文件”§2.4.5,“提示符实际上在范围内的是什么?”.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接