
#12367: Commit adding instances to GHC.Generics regression compiler performance -------------------------------------+------------------------------------- Reporter: bgamari | Owner: bgamari Type: bug | Status: new Priority: normal | Milestone: 8.0.2 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Generics Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): It's not entirely clear how to proceed from here. The problem here is that we want to provide `Generic` instances for many types in `base`, while at the same time providing, e.g., `Foldable` and `Monoid` instances for the generic representation types. As far as I can tell we have a few options, 1. Keep the status quo and accept the fact that much of `base` pulls is `GHC.Generics` 2. Move the data types in `GHC.Generics` to a new `GHC.Generics.Internal` module, placing the the instances in `GHC.Generics`. This would mean that `GHC.Generics` would be full of orphans but that fewer modules within `base` would need to import the full bulk of the instances. That being said, this does nothing to help users who use `GHC.Generics` but none of the instances. 3. Wire-in the generics representation types to hopefully avoid the need to pull in the interface file at all when deriving `Generic` (assuming that GHC in fact is capable to avoid pulling in interface files when loading only wired-in declarations). 4. Add `hs-boot` files for `Foldable`, `Traversable`, et al., allowing us to move the instances for the `GHC.Generics` types to `GHC.Generics` 5. Something else? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12367#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler