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.