Message from discussion Scheme is heavily academic?
From: Pascal Costanza <p...@p-cos.net>
Subject: Re: Scheme is heavily academic?
Date: Thu, 01 Feb 2007 21:13:37 +0100
References: <email@example.com> <firstname.lastname@example.org> <52cm8pF1o4jiaU1@mid.individual.net> <email@example.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
X-Trace: individual.net c9EJAF4fcH51WIIpQm9JggXu8TBeBNvwH2/nNs8y/qswBoZoJn
User-Agent: Thunderbird 220.127.116.11 (Macintosh/20061207)
Ray Dillinger wrote:
> Pascal Costanza wrote:
>> The Common Lisp
>> Object System has been designed with the flexibility in mind to adapt
>> it to different kinds of object systems. So for certain styles of
>> object systems, it is especially easy to experiment with variations
>> thereof. Especially, it is relatively painless to make non-trivial
>> modifications and still get reasonable efficiency such that such
>> modifications can actually be used in practice. (You're correct that
>> the latter is not necessarily an important requirement, but can be
>> interesting nonetheless in some cases.)
> In fairness, I haven't masterd the CLOS MOP. I may be underestimating
> the flexibility of the object system available.
If you want to learn more about it but want to avoid learning the rest
of Common Lisp, Tiny CLOS for Scheme is a pretty good starting point.
Eli Barzilay's Swindle is based on this (part of PLT Scheme), as is
STklos. The latter two seem to be pretty good approximations of full CLOS.
However, none of the CLOS derivatives for Scheme I have seen so far are
as complete as CLOS itself.
The paper "User-Level Language Crafting" by Andreas Paepcke gives an
excellent introduction to the CLOS MOP (and it should be relatively
straightforward to see how this maps to Tiny CLOS). You can find it on
There is, however, no substitute for reading The Art of the Metaobject
Protocol sooner or later. ;)
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/