2022-08-03 16:41:45 -04:00
|
|
|
|
# Objects
|
|
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
|
|
|
|
In Scheme, as in other Lisp dialects, "everything is an object". But
|
|
|
|
|
Scheme is not "object-oriented" in the sense of classes and methods.
|
|
|
|
|
|
|
|
|
|
Various Scheme implementations have bolted an object system on top of
|
|
|
|
|
standard Scheme. Most of these are variants of the Common Lisp Object
|
|
|
|
|
System (CLOS) which evolved from an older Lisp Machine object system
|
|
|
|
|
called Flavors. The Kawa and IronScheme implementations have Java and
|
|
|
|
|
C# style object systems, respectively.
|
|
|
|
|
|
|
|
|
|
## Existing Scheme object systems (CLOS-like)
|
|
|
|
|
|
|
|
|
|
### Meroon
|
|
|
|
|
|
|
|
|
|
Queinnec93
|
|
|
|
|
|
|
|
|
|
### Bigloo
|
|
|
|
|
|
|
|
|
|
Included since 1.9. Mainly inspired by Meroon.
|
|
|
|
|
|
|
|
|
|
* Ad-hoc polymorphism (generic functions and methods).
|
|
|
|
|
* Single inheritance and mono-dispatch.
|
|
|
|
|
* Introspection.
|
|
|
|
|
|
|
|
|
|
### Gauche
|
|
|
|
|
|
2023-06-18 04:28:24 -04:00
|
|
|
|
### Guile
|
|
|
|
|
|
|
|
|
|
From [the manual](https://www.gnu.org/software/guile/manual/html_node/GOOPS.html):
|
|
|
|
|
|
|
|
|
|
> GOOPS is the object oriented extension to Guile. Its implementation
|
|
|
|
|
> is derived from STk-3.99.3 by Erick Gallesio and version 1.3 of
|
|
|
|
|
> Gregor Kiczales’ Tiny-Clos. It is very close in spirit to CLOS, the
|
|
|
|
|
> Common Lisp Object System, but is adapted for the Scheme language.
|
|
|
|
|
|
2022-08-03 16:41:45 -04:00
|
|
|
|
### MIT Scheme
|
|
|
|
|
|
|
|
|
|
### STk and STklos
|
|
|
|
|
|
|
|
|
|
## Existing Scheme object systems (other)
|
|
|
|
|
|
|
|
|
|
### Kawa
|
|
|
|
|
|
|
|
|
|
Java compatible
|
|
|
|
|
|
|
|
|
|
### IronScheme
|
|
|
|
|
|
|
|
|
|
C# compatible
|