Version 0.4 is now available:
Sigma is a functional programming language and interpreter written in
just over 7K lines of C++.
Sigma implements first-class environments and 'suspended' expressions as
what readers of comp.object might find an interesting alternative to
more traditional object systems. See the end of the tutorial referenced
in the above web page for a description.
The read/eval/print loop, although implemented entirely in C++, was
heavily inspired by Scheme.
Major changes from 0.3 to 0.4:
Fixed a bug in the Integer class which allowed both positive and
negative zero to be represented.
The smart pointer class now correctly handles pointers to
nothing. (This bug never showed up in 0.3 of sigmatest because
pointers to nothing were never created.)
There was a bug in the specialized 'Package::contains' function for
Args. It checked for cell containership not within itself, but within
the cells contained within itself. This was an astoundingly subtle bug
because it only broke things in extremely contrived circumstances. (In
fact, it was impossible to invoke the bug in 0.3 sigmatest.)
Lists are supported.
First-class environments and "suspended" expressions are supported
as an alternative to more traditional object systems.