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
The paper is here.