
#8177: Roles for type families -------------------------------------+------------------------------------- Reporter: simonpj | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: | Blocked By: None/Unknown | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by dmcclean): Hmmm. I was concerned there for a second, because actually `Quantity'` won't be in scope for my users. Its not exported from the module because you can use it to do nefarious things. So I thought that my test in GHCi had been insufficiently thorough, because GHCi doesn't respect the export list and lets you get at unexported things for convenience. So I made a new module to try it. {{{ import Numeric.Units.Dimensional.DK.Prelude import Data.Coerce main = do let x = 3.7 :: Double let y = (coerce x) :: Mass Double putStrLn . show $ y -- putStrLn . show $ Quantity' x -- doesn't compile with this line here }}} It works just fine and prints "3.7 m". With the commented line it doesn't compile, complaining that `Quantity'` is (as I intended) not in scope. (If it had been in scope, it would still fail because the dimension is ambiguous, but that's not the point.) So it seems that whether or not the newtype constructor is in scope is not the determining factor here. If it was intended to be, than this may be a bug? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8177#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler