Haskell: скрыть функцию в модуле (т.е. сделать функцию доступной только для других функций в том же модуле)

Предположим, у меня есть файл NeededModule.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 ответ

Решение

Вы просто указываете методы, которые хотите экспортировать, в строке модуля:

module NecessaryModule (addNumber1) where
....

Если вы не укажете эту строку, она включает все по умолчанию.

Другие вопросы по тегам