Binding-time analysis is a crucial component of an ofine partial evaluator. The accuracy of the binding-time information that it produces determines the degree of specialization of programs. We present a binding-time analysis for applicative languages. This analysis is polyvariant and treats both higher-order functions and data structures. It handles typed as well as untyped programs. It has been implemented and is used in a partial evaluation system named Schism. The main contributions of this work can be summarized as follows. Our analysis combines both a data ow and a control ow analyses. This key feature makes it possible to create di erent binding-time descriptions of a function (or a data structure) with respect to data ow information. Also, this approach yields more accurate control ow information than one that separates control ow and data ow analyses. The degree of polyvariance achieved by our analysis is not xed. In fact, the analysis is parameterized with respect to a funct...