Categories

Download: Categories v0.1

Categories is an experimental object system, created to explore separating representation, behavior, and taxonomy into orthogonal parts.

Categories v0.1 is a preliminary version of Categories with the following features:

The R5RS implementation is simple, and not particularly efficient. With luck, though, it's small enough and portable enough that anyone who cares can make a more efficient implementation that takes advantage of some particular Scheme's features.

This release comes with just one domain: -flat-. The -flat- domain provides polymorphic functions and multiple dispatch, but no inheritance. I plan an additional release that will include two more domains: the -c3- domain will provide multiple inheritance and dispatch that uses the C3 class-linearization algorithm (see this paper for more about C3); the -pred- domain will provide predicate dispatch with C3 linearization of predicates.

Past that, I also plan a release of Categories for Gambit that takes advantage of some Gambit-specific features to make things faster and more convenient, and a release of Categories for Clojure.