Object-Gofer is a small, practical extension of the functional programming language Gofer incorporating the following ideas from the object-oriented community: objects and toplevel classes, subtype and implementation inheritance, method redefinition, late binding and self type specialization. The semantics of Object-Gofer is defined by translation into pure Gofer. Although this restricts the design space, it turns out that using a suitable framework of monads, higher-order polymorphism, and overloading, objects smooth well with functions. 1 Case for Functional Object-oriented Programming Object-oriented concepts are ubiquitous in programming. Objects may model real life entities, or may represent system artifacts like stacks. Objects provide a way to structure a system and to control the computation. The most characteristic feature of object-oriented programming is inheritance, which allows new classes to be defined as increments of existing ones. Inheritance comes with late binding...