SchemeTalk is a Smalltalk like OO system as an extension to and written/bootstrapped in Scheme.
SchemeTalk's graphical inspector
SchemeTalk consists of a fairly small set of core classes with an extensive meta-object protocol. Methods and slots are first-class. This allows us to extend the language from within.
SchemeTalk implements metamethods (a type of methods comparable to Python's decorators) and uses it to implement actors with asynchronous methods which return futures. Which is then again extended with support for remote method invocation.
In order to show its close relation to real Smalltalk code, SchemeTalk implements a Smalltalk-to-SchemeTalk compiler. This compiler translates Smalltalk code to its SchemeTalk equivalent. SchemeTalk provides a bootstrapping environment for Smalltalk code on top of which the compiled Smalltalk code is then loaded. Primitives are implemented in a single Smalltalk-Primitives class with a straightforward definition of the most common primitives. This implementation was used to bootstrap parts of the mini.image and a more recent Pharo image.
In order to use the graphical part, please run on top of DrScheme.
- Toon Verwaest and Lukas Renggli, "Safe Reflection Through Polymorhpism", (submission) is accepted for publication at Casta '09.
SchemeTalk is available at:
- PLT http://www.iam.unibe.ch/~verwaest/schemetalk/schemetalk-0.3-4.1.3.plt
- ZIP http://www.iam.unibe.ch/~verwaest/schemetalk/schemetalk-0.3-sources.zip
- TAR http://www.iam.unibe.ch/~verwaest/schemetalk/schemetalk-0.3-sources.tar.bz2
- SVN https://www.iam.unibe.ch/scg/svn_repos/Sources/SchemeTalk/
SchemeTalk is being documented piece by piece on my blog:
- Installing and Getting Started
- First-class Slots
- First-class Methods
- 24.06.09: Currently the direct development of SchemeTalk is stalled in favor of the offspring project Pinocchio which is implemented more low-level to be more fundamental.
- 19.03.09: Links to PLT and SRC for version '0.3'. Actually a lot has changed since 0.2, which was noticeable in the subversion. I just forgot to update the main links. Most important change: now SchemeTalk works nicely together with DrScheme for developing. When errors occur DrScheme will highlight the location where they occurred and you will get a nice stacktrace.