Object-Oriented Functional Programming and Type Reconstruction

This paper presents an object-oriented functional programming language core, its ML-style static type inference and a corresponding type reconstruction algorithm. The language allows object definitions as in Eiffel, algebraic value definitions as in Haskell and most code reuses in Eiffel and Haskell. The type inference combines the usual structural subtyping relation and Haskell type classes. The type reconstruction algorithm computes static types for those programs, in which explicit type annotations are given at subtyping coercions.

The paper is here.

Zhenyu Qian