Формально в Haskell 2010 это недопустимо:
module A( f ) where f = True module B where import A hiding( g ) -- A does not export g g = f
Формально import A hiding( g ) в модуле B — это ошибка (Отчёт Haskell, 5.3.1), поскольку A не экспортирует g. Однако GHC разрешает это для обеспечения обратной совместимости; например, более новая версия A может экспортировать g, и вы хотите, чтобы B работало в обоих случаях.
Предупреждение -Wdodgy-imports, выключенное по умолчанию, но включаемое с помощью -W, указывает на попытку скрыть элемент, который импортируемый модуль не экспортирует.