
#11432: Cannot export operator newtype -------------------------------------+------------------------------------- Reporter: phadej | Owner: Type: bug | Status: new Priority: highest | Milestone: 8.0.1 Component: Compiler | Version: 8.0.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by skvadrik): As `Note [Type constructors in export list]` says, type/variable constructors in export lists introduce ambiguity in grammar: {{{ Mixing type constructors and variable constructors in export lists introduces ambiguity in grammar: e.g. (*) may be both a type constuctor and a function. -XExplicitNamespaces allows to disambiguate by explicitly prefixing type constructors with 'type' keyword. This ambiguity causes reduce/reduce conflicts in parser, which are always resolved in favour of variable constructors. To get rid of conflicts we demand that ambigous type constructors (those, which are formed by the same productions as variable constructors) are always prefixed with 'type' keyword. Unambigous type constructors may occur both with or without 'type' keyword. }}} Resolving ambiguity by changing grammar is impractical: type/variable constructors in export lists are used in exactly the same context (it's *not* a lookahead problem). This ambiguity can be resolved, but not on parser level: parser should parse constructor as 'just some constructor' (wrap it) and delay the actual decision to the next phase. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11432#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler