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.

SourceForge project page
Doug Orleans <>
Last modified: Fri Feb 20 16:31:56 EST 2004