It has to be in a single function. Suppose you have a variety of modules each of which has a variety of types. And you need to compose a compile-time string which involves all those types and you need to mix that string in at some point. You can't do that.