
#10796: Illegal data constructor name: `fromList' ... When splicing a TH expression -------------------------------------+------------------------------------- Reporter: erisco | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Template Haskell | Version: 7.8.3 Resolution: | Keywords: Operating System: Windows | Architecture: x86_64 | (amd64) Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by goldfire): A little poking through shows me that this is an infelicity in the containers library. The splice above calls `Language.Haskell.TH.Quote.dataToQa`, which performs lifting (in the sense of TH's `lift` operation and `Lift` class) based on a `Data` instance. The data involved includes a `Data.Set.Set`. And `Set`'s `Data` instance reads, in part {{{ instance (Data a, Ord a) => Data (Set a) where toConstr _ = fromListConstr fromListConstr :: Constr fromListConstr = mkConstr setDataType "fromList" [] Prefix }}} Note that the "constructor" is named `fromList`. But this is a lie, of course. It's done to preserve abstraction, which is a laudable goal, so I'm not calling it a bug. An easy solution here would be to generalize `dataToQa` to check if it's given a data constructor or just a function and react accordingly. It really should be getting a constructor, but there seems to be no harm in allowing `Data` instances to lie like this and continue gracefully. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10796#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler