Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 正确导入模块,其中某些定义仅在使用限定名称时可见_Haskell_Coding Style - Fatal编程技术网

Haskell 正确导入模块,其中某些定义仅在使用限定名称时可见

Haskell 正确导入模块,其中某些定义仅在使用限定名称时可见,haskell,coding-style,Haskell,Coding Style,假设我定义了一个名为b,c的模块A 现在,我希望以某种方式导入,并且应该可以访问以下名称: A.b A.c c 其中隐藏了非限定名称b 我尝试的方法是以两种方式导入两次: import A hiding (b) import qualified A (b) 但它似乎没有达到上述效果。那么,正确的方法是什么呢?您应该能够做到这一点 import A (c) import qualified A 或 它应该只允许您使用限定语法访问c,然后访问A中的所有内容。如果您在GHCi中测试此功能,请记

假设我定义了一个名为
b
c
的模块
A

现在,我希望以某种方式导入,并且应该可以访问以下名称:

  • A.b
  • A.c
  • c
其中隐藏了非限定名称
b

我尝试的方法是以两种方式导入两次:

import A hiding (b)
import qualified A (b)

但它似乎没有达到上述效果。那么,正确的方法是什么呢?

您应该能够做到这一点

import A (c)
import qualified A


它应该只允许您使用限定语法访问
c
,然后访问
A
中的所有内容。如果您在GHCi中测试此功能,请记住GHCi有一些额外的特殊功能,允许它在从源代码加载的模块中进行更多访问,因为它的主要用途是探索和调试。

谢谢您的回答。当我在ghci中执行此操作时,它会警告我:
此“b”的绑定会隐藏现有绑定
?你是说我应该忽略这个警告?假设我在源文件中定义了
b
。@ShouYa是的,可能吧。同样,这实际上不可从ghci测试,因为它有更多的能力查看源文件内部。如果您将其作为编译库安装到系统中,ghci将无法在其中看到额外的b,只有当它可以直接访问源代码时(无论如何,我99%肯定这一点),我才认为我做错了什么。如果你确定是这样的话,我会觉得更轻松:)谢谢。
import A hiding (b)
import qualified A