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
....
Если вы не укажете эту строку, она включает все по умолчанию.