
#13151: Make all never-exported IfaceDecls implicit -------------------------------------+------------------------------------- Reporter: ezyang | Owner: ezyang Type: task | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.1 checker) | Resolution: | Keywords: backpack 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 simonpj): I like it the way it is. Here's why. Unfoldings for any old function might mention `$fEqList` the `DFun` for equality on lists. So there must be a top-level declaration for `$fEqList` in the interface file {{{ $fEqList :: forall a. Eq a -> Eq [a] -- ...together with arity, unfolding, strictness, whatever, just -- like any other Id... }}} or at least it is simple and convenient for that to be the case. It's particularly important that it has an unfolding;l this unfolding is always a `DFunUnfolding`. And once we have that, it seems simpler to refer to it from the instance decl rather than to duplicate it. I suppose you could put all this in the instance decl. But would need to define the top-level Id `$fEqList`. I have not yet grokked what's hard about the sataus quo. I'm not fundamentally against refactoring it though. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13151#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler