The series of GPM-like macroprocessors at Bell Labs stretches back further in time than is described in the History section of the texinfo manual for m4. Macros were quite a cottage industry there.
The names m3 and m4 were prefigured by m6, written by Andrew D. Hall as a tool to parameterize the Fortran source for the Altran computer algebra system to facilitate porting among multiple platforms. The manual for m6 is at http://cm.bell-labs.com/cm/cs/cstr/2.pdf. Kernighan and Plauger were inspired by that model. Hall's m6 in turn was based on models that Robert Morris and I described in an unpublished memorandum in 1970. The code for one of those models was originally written by me in 1968 during a visiting lectureship in Strachey's lab, so the connection to GPM is quite intimate. My Snobol fit on a page, but of course used the whole Snobol interpreter, while GPM fit in 250 machine instructions. Strachey was a brilliant programmer! The three predecessors mentioned above were, in chronological order, written in Snobol 3, Fortran, and Ratfor, so their source code looked far less similar than their behaviors. Doug McIlroy
