
#14594: 2 modules / 2500LOC takes nearly 3 minutes to build -------------------------------------+------------------------------------- Reporter: schyler | Owner: dfeuer Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: 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 dfeuer): There's always a certain amount of non-linearity in the types of multi- field records. For example, given {{{#!hs data Foo = Foo Int Char Integer gfoldlFoo :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Foo -> c Foo gfoldlFoo c k (Foo x y z) = k Foo `c` x `c` y `c` z }}} we get {{{ Testy.$wgfoldlFoo = \ (@ (c_s4UQ :: * -> *)) (w_s4UR :: forall d b. Data d => c_s4UQ (d -> b) -> d -> c_s4UQ b) (w1_s4US :: forall g. g -> c_s4UQ g) (ww_s4UW :: Int) (ww1_s4UX :: Char) (ww2_s4UY :: Integer) -> w_s4UR @ Integer @ Foo Data.Data.$fDataInteger (w_s4UR @ Char @ (Integer -> Foo) Data.Data.$fDataChar (w_s4UR @ Int @ (Char -> Integer -> Foo) Data.Data.$fDataInt (w1_s4US @ (Int -> Char -> Integer -> Foo) Testy.Foo) ww_s4UW) ww1_s4UX) ww2_s4UY }}} Note that we get types `Foo`, `Integer -> Foo`, `Char -> Integer -> Foo`, and `Int -> Char -> Integer -> Foo`. But does this affect the simplifier? I don't know. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14594#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler