vCalc is a Reverse Polish Notation (RPN) calculator I've developed for Windows. It's currently on sale as shareware via the Icegiant Software website. Icegiant software also sells a very nice suite of web-spider applications for downloading images, MP3's, and e-mail addresses.

The core of vCalc is an interpreter for the programming language Scheme. If you're not familar with Scheme, it's a member of the Lisp-like family of languages. The implementation of Scheme used by vCalc, George Carrette's SIOD, is fairly lightweight, interfaces easily with C and C++, and doesn't come close to implementing the complete R5RS definition of Scheme. Having said that, I've made attempts to evolve the language supported by vCalc in the direction of R5RS and ANSI Common Lisp, rather than develop my own, new, language features.

In the current version of vCalc, the only exposure of Scheme to the outside world is via save files. vCalc save files (VCX) are currently saved to disk in the format of Scheme executable programs that set key variables to reflect the user state of the calculator. The one variable that can't currently be set via the user interface is vcalc::*last-stack-limit*. This controls the number of times the last-stack command can be invoked in sequence to restore a previous stack state. If you're working with lots of datasets on the stack, it can be beneficial to lower this number, as every saved stack state consumes memory and space in save files. (However, in testing, vCalc seems fairly reliable at the default settings with dataset sizes greater than 100K 2-D data points!)

Another implication of vCalc's save file format is that things other than variable assignments can be placed into save files, by hand, and then loaded into a running copy of vCalc. As a demonstration of this capability, I've developed a simple utilities file that can be loaded into vCalc to provide a scatterplot facility for 2-D datasets, complex number operations, and a command to store Anscombe's quartet into the first four memory registers. (Anscombe's quartet, if you're not familar with it, is a first-rate demonstration of some of the weaknesses of simple numerical statistics. All four datasets have the same descriptive statistics, and yet have widely varying characteristics.)

Picture of vCalc displaying a scatterplot

At this point, the programming features of vCalc will remain largely undocumented into the forseeable future. That said, I hope that the code in vcalc_utilities.vcx can offer inspiration to people wanting more out of vCalc.