
About this teste code:
module Main (main) where { import Foreign hiding (unsafePerformIO,Foreign.Ptr,Data.Bits,) ; blo = xor 10 10 :: Int ; main = return () }
You're only hiding the typeclass Data.Bits, not the function xor. To do that, you have to write
import Foreign hiding (unsafePerformIO,Data.Bits(..))
Generally, I'd use (...) import qualified Foo as F and don't ever have to worry about name clashes.
Agree. I'm asking this because I'm wrting my syntax reference. Is that a GHC extension? Look at this (from haskell 98 report sections 5.2 and 5.3): export -> qvar | qtycon [(..) | ( cname1 , ... , cnamen )] | qtycls [(..) | ( var1 , ... , varn )] | module modid import -> var | tycon [ (..) | ( cname1 , ... , cnamen )] | tycls [(..) | ( var1 , ... , varn )] It seems 'modid's are included when exporting names, but not when importing. Maurício