Abstract:This paper considers the problem of combining the object-oriented and functional programming paradigms. Compared with most of the approaches in this direction, the combination has the following two advantages. First, the authors combine several important concepts as they are well known in widespread mainstream languages. In other words, the authors do not introduce new language concepts but try to interpret well-known language concepts based on the new ones. Second, the combination has the property that individual language concepts do not influence the whole language to the extent as they do traditionally, so that usually one needs to pay for a language concept only when he uses it. Concretely, a core language for functional object-oriented programming together with a straightforward operational semantics is proposed, where the properties mentioned above hold. 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.