The CLOVER Rewrite Rules: A Translation from OOFP to FP

There have been many attempts to integrate object-oriented and functional programming. Solving the connicting requirements is dif-cult and only recently has a language, CLOVER, been designed that is both purely functional and purely object-oriented (and retains complete type safety). In this paper, we introduce the CLOVER rewrite rules by presenting a translation from CLOVER to a simple functional language. The object-oriented features are translated away in stages; the resulting translations are combined to provide a translation from object-oriented functional programming to functional programming.

[1]  Lee Braine,et al.  An Object-Oriented Functional Approach to Information Systems Engineering , 1997 .

[2]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[3]  John H. Reppy,et al.  Simple objects for Standard ML , 1996, PLDI '96.

[4]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[5]  Alexander Aiken,et al.  Static type inference in a dynamically typed language , 1991, POPL '91.

[6]  Carl Hewitt,et al.  Actors: A Conceptual Foundation for Concurrent Object-Oriented Programming , 1987, Research Directions in Object-Oriented Programming.

[7]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[8]  Lee Braine,et al.  Object-flow , 1997, Proceedings. 1997 IEEE Symposium on Visual Languages (Cat. No.97TB100180).

[9]  Alexander Aiken,et al.  Dynamic typing and subtype inference , 1995, FPCA '95.

[10]  Didier Rémy,et al.  Objective ML: a simple object-oriented extension of ML , 1997, POPL '97.

[11]  John C. Mitchell,et al.  An extension of standard ML modules with subtyping and inheritance , 1991, POPL '91.