Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Stklos clos

13 views
Skip to first unread message

Hans Oesterholt

unread,
Jan 15, 2004, 3:59:32 AM1/15/04
to
I'm just wondering. Gauche and STKlos are
using a similar CLOS object system that
seems to be a good one.

Would it be possible to make a full
portable scheme variant of this CLOS
that can be used by (m)any other scheme(s)?

I'm specifically interested in
such a CLOS variant for bigloo.

Regards,
Hans.

Alex Shinn

unread,
Jan 19, 2004, 1:58:06 AM1/19/04
to
At Thu, 15 Jan 2004 09:59:32 +0100, Hans Oesterholt wrote:
>
> I'm just wondering. Gauche and STKlos are
> using a similar CLOS object system that
> seems to be a good one.

Gauche's object system is specifically based on STklos, which in turn is
based on TinyCLOS, a small and portable yet very flexible CLOS subset.

The Scheme FAQ gives a brief answer and a few pointers to OO systems:

http://schemers.org/Documents/FAQ/#N10640

though I think a better list is available at the CMU AI repository (this
includes TinyCLOS):

http://www-2.cs.cmu.edu/Groups/AI/lang/scheme/oop/0.html

Another portable OO system is Meroon (available at above links) which
was the basis for withdrawn SRFI-20.

Below is a genealogy of object systems with brief notes about their
major differences. Please let me know if I made any mistakes or missed
anything below. Pointers to other Lisp-based object systems would be
much appreciated.

OO: Vague concept of abstraction, many definitions.
|
+- CLOS: Common Lisp Object System, based on CommonLoops and New Flavors,
| | winning out in the CL standardization over Object Lisp and
| | Common Objects. I know nothing of those 4 original systems.
| |
| +- TinyCLOS: Subset of CLOS written in pure Scheme, including a
| | | meta-object protocol (MOP). Classes, generics &
| | | methods all 1st class. Native OO system for Chicken.
| | |
| | +- SOS: MIT Scheme's native OO system, mostly differs in naming
| | | and interface. No MOP via meta-classes but supports
| | | computed methods.
| | |
| | +- STklos: Native TinyCLOS implementation. Class redefinition.
| | | Don't need to predefine generics (complicates module
| | | interaction).
| | |
| | +- Gauche: Well integrated with native libraries.
| | | Collections API. MOP utilities.
| | |
| | +- GOOPS: Guile's native OO system, also well integrated.
| | Very well documented.
| |
| +- SISC: Similar to TinyCLOS (possibly a conscious influence though
| | I can't find any lineage in the docs). Limited multiple
| | inheritance.
| |
| +- Meroon: Another CLOS derivative, similar to TinyCLOS but more
| | | featureful (also has stripped down version Meroonet).
| | | MOP. DSSSL support. Excellent documentation.
| | |
| | +- Bigloo: Native implementation based on Meroon, has 1st class
| | classes, generics & methods. No MOP. Fields can be
| | typed with native C types for efficiency.
| |
| +- YASOS: Yet Another Scheme Object System, a portable OO system
| | distributed with SLIB. Works in terms of dispatching
| | methods (called operations) on arbitrary Scheme values
| | (which can inherit from arbitrary Scheme values - there
| | are no classes). Includes a collections API.
| |
| +- MOS: Macroless Object System, removes macros (and thus uses
| different API) from YASOS but keeps the idea of methods
| on objects with no classes. Distributed with SLIB.
|
+- MzScheme: System of classes, objects and methods, all 1st class Scheme
| values, but no MOP. Single inheritance with interfaces and a
| public/private distinction similar to the C++ & Java style of
| OO. Uses explicit send syntax to call methods, although a
| with-method syntax is provided to look like CLOS methods.
| Excellent interactive documentation.
|
+- Kawa: Access to Java OO system. Methods defined statically with
| classes. Provides "this" syntax.
|
+- Smalltalk: Oldest OO system still in use (only Simula is older, and
| Smalltalk is better). Objects dispatch on methods names,
| as opposed to the reverse in all of the above systems.
|
+- SICP: Chapter 3 of The Structure & Interpretation of Computer
Programs describes a very simple dispatch closure based
OO system. Some of the smaller OO system's in the
Scheme repositories follow this style, most Schemers
write such an OO system at some point, and many Schemers
use this style without any sugar when they want portable
code (see much of SLIB).

--
Alex

Anton van Straaten

unread,
Jan 19, 2004, 2:05:18 AM1/19/04
to
Another descendant of TinyCLOS is Swindle, for PLT Scheme:
http://www.cs.cornell.edu/eli/Swindle/


Alex Shinn

unread,
Jan 19, 2004, 9:21:55 PM1/19/04
to
At Mon, 19 Jan 2004 07:05:18 GMT, Anton van Straaten wrote:
>
> Another descendant of TinyCLOS is Swindle, for PLT Scheme:
> http://www.cs.cornell.edu/eli/Swindle/

Oops, that was a pretty significant one to miss.

Other CLOS relatives are Dylan (which made lots of improvements in OO),
TELOS (The EuLisp Object System), Goo, and EIEIO (the Emacs CLOS).

--
Alex

Friedrich Dominicus

unread,
Jan 20, 2004, 3:14:11 AM1/20/04
to
Alex Shinn <fo...@synthcode.com> writes:

>
> and EIEIO (the Emacs CLOS).

The latter is not very much CLOSish, no mulitmethods e.g

Regards
Friedrich

0 new messages