Sigma is a small, interpreted, functional programming language implemented in C++ as a set of modular library components. It was designed to serve as an embedded language.

Sigma's implementation includes:
  • A mark-and-sweep garbage-collecting smart pointer
  • Function objects supporting dynamic multimethod dispatching
  • A lexer generator
  • An SLR parser generator
  • Support for arbitrary-precision and rational arithmetic

Sigma is free as in beer. I hope folks find it interesting and useful and I welcome feedback, but I can't promise to support it, and I make no guarantees about its usefulness for any purpose.

Source is here, and a brief tutorial is here.


Sigma borrows ideas from Scheme, SML, and Dylan.

Hyman Rosen suggested the test used to determine whether a smart pointer was contained in a given object. It was the practicality of this test that made me realize that a mark-and-sweep garbage-collecting smart pointer was possible to implement using 'straight' C++.

William Kemph suggested the technique that allows this implementation of smart pointers to handle multiple inheritance correctly. He has his own implementation of smart pointers inspired by an earlier version of the one provided here.