
#13090: Expose all unfoldings of overloaded functions by default -------------------------------------+------------------------------------- Reporter: mpickering | Owner: Type: bug | Status: new Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2929 Wiki Page: | -------------------------------------+------------------------------------- Comment (by rwbarton): Replying to [comment:2 j.waldmann]:
As a user, yes, I would welcome an easy way to have "overloaded functions specialised at call sites".
But there must be limits surely. For example in GHC there are plenty of functions that are hundreds of lines long. They happen to (mostly?) not be overloaded, but if they were then it would surely not be sensible to copy them into every client module once for every type at which they are used.
Attaching a pragma to each of them is not "easy", but a compiler option (per module, or per cabal project) is.
Sure, but a compiler option is not "by default".
If compile times/code sizes go up, so be it. It's a price to pay for faster executables.
If you opt into it, okay. Slow compile times are pretty much the most common complaint about GHC as far as I've seen. mpickering suggested on IRC that we might by default only do this for small functions; I'd be much happier about that (and it does seem like it would have real runtime performance gains). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13090#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler