Rolling your own object system is an excellent way to gain a deeper understanding behind object-oriented-programming. It is generally an exercise in learning. It is by no means necessary for you to roll your own object system in scheme, as plenty of well tested object-systems already exist.

The object-oriented-programming page should be considered a prerequisite page before coming here, due to the fact that the term "object-oriented" itself is so heavily overloaded.

Features to think about...

What kind of object system do you want? This is the question that you must ask yourself before blindly forging your object system. Like all good questions, this question leads to yet more questions:

Object Systems of Other Languages

It is a good idea to have a peek at how other object systems are implemented before blindly implementing your own. There already is a python-like-object-system available on the wiki, as well as a java-like-object-system. Oleg Kiselyov has provided the world a purely-functional object system for you functional-programming junkies. All three of these systems are very easy to understand, and can provide a firm base for your own system, or you can start from scratch.

What does it mean?

We in the Scheme world don't run screaming about calling for the Deities to give us some object system (or even worse force us to use it like Java) . If we want any of the various features incoherently attributed to object-oriented-programming, we use those features. If something is not there that we want, we build it. Welcome to our world.


Now I know what people mean when then talk about smug lisp weenies ;) has a full description ;-)