Combining Object-oriented and Functional Language Concepts

This paper considers the problem of combining the object-oriented and functional programming paradigms. Most existing combinations have at least one of the following drawbacks: First, they do not contain all important concepts in widespread mainstream languages in both paradigms; second, well-known ideas in the paradigms are often embodied as language concepts that are totally different from those in widespread mainstream languages; third, these totally different language concepts often influence the whole language so that ``you have to pay for them, no matter you use them or not''. We propose a core language for functional object-oriented programming together with a simple and straightforward operational semantics, which overcomes the drawbacks mentioned above. The core language combines the following key language concepts from the languages Eiffel, Java, ML and Haskell: objects, classes, multiple inheritance, method redefinition, dynamic binding, static type safety, binary methods, algebraic data types, higher-order functions, ML-polymorphism. Two implementations of the core language are well under the way.

The ps file of the paper is here.

Zhenyu Qian