Как вы справляетесь с функцией видимости и модульного тестирования в Haskell?
Если вы экспортируете каждую функцию в модуле, чтобы тесты модуля имели к ним доступ, вы рискуете, что другие люди вызовут функции, которые не должны быть в общедоступном API.
Я думал об использовании {-# LANGUAGE CPP #-}
, а затем окружая экспорт с помощью #ifdef
:
{-# LANGUAGE CPP #-}
module SomeModule
#ifndef TESTING
( export1
, export2
)
#endif
where
Есть ли лучший способ?