The past 20 years have seen an explosion of ``utility-belt programming languages''. Often implemented as true or byte-code interpreters and designed to operate smoothly in the UNIX environment (in the spirit of sed [McM78], AWK [AWK88], bc [MC78a], dc [MC78b], and the like), these languages are intended both to address specific classes of tasks and to be usable for general-purpose programming. Other examples include Perl [WCS96], Python [Lut01], Java [GJSB00], various Scheme [CE92] implementations, and ML [MTH90].
During this time frame, the authors have been intermittently involved in the development of a utility-belt programming language initially tailored to scratch-pad-style numerical calculation, and reflecting design principles including: