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

art*_*lla 1 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
Run Code Online (Sandbox Code Playgroud)

当我做 :

:load NecessaryModule
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

但是当我这样做的时候

:load test2 
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ani 8

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

module NecessaryModule (addNumber1) where
....
Run Code Online (Sandbox Code Playgroud)

如果未指定该行,则默认情况下包含所有内容.