[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A Report on Object-oriented Programming in Scheme.



I use Abelson and Sussman's book "Structure and Interpretation of
Computer Programs" in a course on Scheme and programming paradigms.
One of the things I find particular interesting is the possibilities
of simulating object-oriented mechanisms in Scheme. Unfortunately,
the Abelson and Sussman book is relatively weak in the object-oriented area.

I have written a report which introduces object-oriented programming
in Scheme. It starts with the basics (in order to be pedagogical),
but it also describes some more advanced topics such as multiple
super classes, metaclasses, and procedural activation of methods.
Some of the topics are inspired of existing literature
(in particular Adams and Rees' paper "Object-oriented programming in Scheme",
Lisp & Functional programming 88); other material is new (as far as
I know).

Seriously interested people can obtain a copy of the report (send me a
message). The title and the table of contents of the report is listed
below.

Kurt Normark
normark@iesd.auc.dk


Kurt Normark:
"SIMULATION OF OBJECT-ORIENTED CONCEPTS AND MECHANISMS IN SCHEME",
R-90-1, Department of Mathematics and Computer Science,
Institute of Electronic Systems, Aalborg University, Denmark.

1. Introduction
 1.1 Scheme
 1.2 Simulation
 1.3 Related Work
 1.4 Outline of this Report
2. Classes, Instances, and Message Passing
 2.1 Classes and Instances
 2.2 Message Passing
 2.3 Procedural Activation of Methods
3. Class Hierarchies and Single Inheritance
 3.1 The Introduction of super
 3.2 Object Precedence Lists
 3.3 Another Interpretation of self
4. Multiple Inheritance
 4.1 A Simple Approach
 4.2 Shared Object Parts
 4.3 The Object Precedence List Representation
 4.4 Method Combination
 4.5 Caching of Effective Methods
5. Metaclasses
 5.1 The pattern of Metaclasses
 5.2 The most General Parts of the Class Hierarchy
 5.3 Instantiation of Classes via Message Passing
 5.4 Support of Metaprogramming
6. Conclusions