More concretely, TOFL combines the Haskell-like and object-oriented type system.
TOFL extends the usual mechanism of sending a message to a receiver-object to that to a receiver-expression. The self type can occur anywhere and arbitrary times within a type corresponding to the receiver-expression. But outside the type, the self type can only occur at co-variant positions. Under this restriction, TOFL can support binary operations naturally without sacrificing the static type safty.
TOFL supports dynamic binding mechanism. The underlying calculus, ie. a stratified and explicitly typed $\lmd$-calculus $\HM$ with overloaded functions, where redefinitions and late binding become late binding of overloaded functions, has been proved to be confluent.
The paper is here.
FTP: ftp.uni-bremen.de:/pub/Uni-Bremen/Departments/CS/Chairs/Krieg-Brueckner/qian/ecoop96.ps.gz
A long version of the paper is here.
FTP: ftp.uni-bremen.de:/pub/Uni-Bremen/Departments/CS/Chairs/Krieg-Brueckner/qian/lecoop96.ps.gz
The slides for a talk at ECOOP96 are here.
For a hard copy send a message to Zhenyu Qian.