The FLINT Project








Representing Java Classes in a Typed Intermediate Language

Last modified: Fri Feb 23 18:41:13 2001 GMT.


Christopher League
Zhong Shao
Valery Trifonov


We propose a conservative extension of the omega-order polymorphic lambda calculus (Fomega) as an intermediate language for compiling languages with name-based class and interface hierarchies. Our extension enriches standard Fomega with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on Fomega makes it also a suitable target for translation from other higher-order languages; this enables the safe interoperation between class-based and higher-order languages and the reuse of common type-directed optimization techniques, compiler back ends, and runtime support.

We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the name-based hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of the same class as the one defining the method. It also exposes the details of method invocation and instance variable access and allows many standard optimizations to be performed on the object-oriented code.


  • In Proc. 1999 ACM SIGPLAN International Conference on Functional Programming (ICFP'99), Paris, France, pages 183-196, September 1999. ©1999 ACM.
  • Technical Report YALEU/DCS/TR-1180, Department of Computer Science, Yale University, June 1999.

Copyright © 1996-2023 The FLINT Group <flint at cs dot yale dot edu>
Yale University Department of Computer Science
Validate this page