Automatic program generation allows the construction of generic reusable software. It permits efficient execution of highly parameterized programs by specializing them with respect to parameters that are known in advance. Our approach turns such as program into a program generator that accepts the known parameters and generates the specialized program efficiently. We present a simple and general technique to derive program generators from specializers. The technique applies to higher-order functional programming languages. It factors specialization into standard evaluation and execution of a small set of combinators provided in a library. We introduce the technique with standard specializers and then apply it to continuation-based specializ...