David: Yes, specialization duplicates code, but it gets funnier than that. In short, the code is "type A = Constr prim prim; type B = Constr A A; type C = Constr B B" and this pattern continues for about 10 iterations. End result? 8KB of text for a single type (which appears many times in any one functions type signature).
While working on a compiler stack which specializes everything to eliminate any polymorphism one of the things I did was write a < 100 line test program (basically a port of Dominic's LargeWord package)... it generates a 108MB post-specialized source file. Yikes!
Add a comment...