6.3.1. Hiding things the imported module doesn’t export¶
Technically in Haskell 2010 this is illegal:
module A( f ) where
f = True
module B where
import A hiding( g ) -- A does not export g
g = f
The import A hiding( g ) in module B is technically an error
(Haskell Report,
5.3.1)
because A does not export g. However GHC allows it, in the
interests of supporting backward compatibility; for example, a newer
version of A might export g, and you want B to work in
either case.
The warning -Wdodgy-imports, which is off by default but included
with -W, warns if you hide something that the imported module does
not export.