Balm programming language bibliography

The Balm programming language was a Lisp like language with a conventional algebraic syntax. It was developed in the early 1970s by Harrison and colleagues at the Courant Institute. In those days cute acronyms were popular so Balm was said to stand for "Block and List Manipulator".

Unlike many Lisp surface languages, Balm was used for some real work, for example the first compilers for the set theoretic language SETL also developed at Courant were written in Balm. There was also a lot of work done on what today would be called byte-code implementations.

Work on the language seems to have followed three phases:
1) The original interpreted implementation at Courant.
2) The MBalm byte-code machine based implementation at Courant.
3) The MBalm extensions developed and used by the computational algebra group at Utah.

To give something of the flavour of Balm, here is some sample code:

FAC = PROC(X), 
   IF X = 0 THEN 1 ELSE X*FAC(X-1) 
END;

Below is an annotated bibliography for Balm. We've restricted the list to published work that should be relatively accessible.

Cole, A.J.
Macro Processors
Cambridge university press, 1976, 202-210.
Chapter 8 of this book contains an introduction to Balm. In view of the books subject, much of this material focuses on Balm's macro capabilities.

Goates, G.B; Griss, M.L. and Herron, G.J.
PICTUREBALM: A LISP-based graphics language system with flexible syntax and hierarchical data structure
Proc. 7th Computer Graphics and Interactive techniques (1980) 93-99

Applying the Balm language to graphics.

Griss, M.L and Swanson, M.R.
MBALM/1700: A micro-coded LISP machine for the Burroughs B1726
Proc. Micro-10, (1977) 15-25

This paper covers the MBalm bytecode system together with some extensions made by the authors and its implementation via microcode on the B1700. The most detailed of the Griss et al papers on MBalm. The paper gives details of the bytecodes, stack model, heap structure and garbage collection. Some statistics of bytecode usage are also provided.

Griss, M.L. and Kessler, R. R.
REDUCE/1700: A micro-coded Algebra System
Proc. IEEE Micro-11, (1978) 130-138.

This paper discusses the MBalm bytecode system both microcoded on the B1700 and on other machines via a macro implementation language called BIL. Some comparisions are given between MBalm and other Lisp implementions. Statistics are given for the implementation of the Reduce computer algebra system running on MBalm.

Griss, M. L.; Kessler, R. R. and Maguire, G.Q. Jr.
TLISP - A Portable LISP Implemented in P-code.
Proceedings of EUROSAM 79, Springer Verlag, LNCS 72, June, 1979, pp. 490-502.

This paper covers much of the same material as the others by Griss et al but with less technical detail.
Interestingly, most citations of this work give the publisher as the ACM. Although the conference itself was co-sponsored by ACM SIGSAM, the proceedings were actually published by Springer as cited above.

Harrison, M.C.
BALM - An extendable lisp-processing language
Proceedings SJCC 36 (1970), pp 507-511

The original published paper on Balm. Gives a good introduction to the language and original interpreter based implementation.

Harrison, M.C.
A Language orientated instruction set for the BALM language
SIGPLAN-SIGMICRO 9 (1973) 161-168

This paper gives a definition of the bytecode instructions for the MBalm machine.

Harrison, M.C.
Data structures and Programming
Scott, Foresman and Co, Glenview, IL (1973)

Chapter 8 of this book covers Balm, including details of the parser.
Also of interest is appendix 2 which gives a listing of a Balm compiler written in Balm and targetting the MBalm instruction set.