导入“base”System.IO

时间:2014-02-08 12:26:00

标签: haskell ghc

packages-haskell2010/System/IO.hs中,我们有以下一行:

import "base" System.IO hiding (openFile, hWaitForInput)

这种形式的import(后面跟着一个字符串,然后是一个模块名称)没有记录在Import。假设String(在本例中为"base")只是引用一个目录吗?

,我是否正确

1 个答案:

答案 0 :(得分:7)

字符串引用包,因为它是package-qualified import。该扩展程序由

启用
{-# LANGUAGE PackageImports #-}

可以使用它来包含命名包中的给定模块。在您的情况下,它将从包“base”导入System.IO

  

使用-XPackageImports标志,GHC允许导入声明由要从中导入模块的包名称限定。例如:

import "network" Network.Socket
     

将从包网络(任何版本)导入模块Network.Socket。这可用于在多个包中提供相同模块时消除导入的歧义,或者在正在构建的当前包和外部包中都存在。

如果您想了解系统中的软件包,请使用ghc-pkg list。请注意,如果您在cabal中中止了软件包的安装,则可能需要ghc-pkg recacherecache可能需要管理员权限(具体取决于您的平台)。