Haskell:隐藏模块中的函数(即使函数只能由同一模块中的其他函数使用)

时间:2012-04-24 10:30:55

标签: haskell ghc ghci winghci

假设我有一个文件NecessaryModule.hs,它有以下内部:

module NecessaryModule where

addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b

当我这样做时:

:load NecessaryModule

addNumber1和addNumber2在当前范围内都可用。有没有办法隐藏函数addNumber2,以便它可用于同一模块中的其他函数但在我以上述方式加载模块时不加载?感谢

----------------------------------------------- -----------------------------------------

[对nanothief的回应]

我按照以下方式尝试了你的建议,但它对我不起作用。我有一个名为test2.hs的文件如下:

--test2.hs
module Test2 (addNumber1) where

addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b

但是当我做的时候

:load test2 

然后我可以调用addNumber1和addNumber2。我做错了什么吗?感谢

1 个答案:

答案 0 :(得分:8)

您只需在模块行中指定要导出的方法:

module NecessaryModule (addNumber1) where
....

如果您没有指定该行,则默认包含所有内容。