The Socrates programming language

Socrates is a programming language embedded in
PLT Scheme, meaning that
Socrates code and Scheme code can be freely intermixed. Socrates
is implemented as a collection of PLT Scheme libraries,
distributed as a .plt file that can be installed
and compiled with
setup-plt.

Socrates uses a generalized form of
predicate dispatching
to support
advanced separation of concerns.
The core semantics are simple, but layers of syntactic sugar are
provided to emulate many different programming methodologies,
including
CLOS-style
classes and generic functions,
AspectJ-style pointcuts and
advice, and
ComposeJ-style
composition filters.

Socrates is an academic research project whose main goal is
expressibility
rather than efficiency. There is no
static typing
or
type inference,
and the current implementation is quite slow for all but the
smallest programs. It should be regarded more as a
demonstration of ideas than a production-quality language
implementation.