-`GPM' was an important ancestor of `m4'. See C. Strachey: "A General
-Purpose Macro generator", Computer Journal 8,3 (1965), pp. 225 ff.
-`GPM' is also succinctly described into David Gries classic "Compiler
-Construction for Digital Computers".
-
- The classic B. Kernighan and P.J. Plauger: "Software Tools",
-Addison-Wesley, Inc. (1976) describes and implements a Unix
-macro-processor language, which inspired Dennis Ritchie to write `m3',
-a macro processor for the AP-3 minicomputer.
+Macro languages were invented early in the history of computing. In the
+1950s Alan Perlis suggested that the macro language be independent of
+the language being processed. Techniques such as conditional and
+recursive macros, and using macros to define other macros, were
+described by Doug McIlroy of Bell Labs in "Macro Instruction Extensions
+of Compiler Languages", _Communications of the ACM_ 3, 4 (1960), 214-20,
+<http://dx.doi.org/10.1145/367177.367223>.
+
+ An important precursor of 'm4' was GPM; see C. Strachey, "A general
+purpose macrogenerator", _Computer Journal_ 8, 3 (1965), 225-41,
+<http://dx.doi.org/10.1093/comjnl/8.3.225>. GPM is also succinctly
+described in David Gries's book _Compiler Construction for Digital
+Computers_, Wiley (1971). Strachey was a brilliant programmer: GPM fit
+into 250 machine instructions!
+
+ Inspired by GPM while visiting Strachey's Lab in 1968, McIlroy wrote
+a model preprocessor in that fit into a page of Snobol 3 code, and
+McIlroy and Robert Morris developed a series of further models at Bell
+Labs. Andrew D. Hall followed up with M6, a general purpose macro
+processor used to port the Fortran source code of the Altran computer
+algebra system; see Hall's "The M6 Macro Processor", Computing Science
+Technical Report #2, Bell Labs (1972),
+<http://cm.bell-labs.com/cm/cs/cstr/2.pdf>. M6's source code consisted
+of about 600 Fortran statements. Its name was the first of the 'm4'
+line.
+
+ The Brian Kernighan and P.J. Plauger book _Software Tools_,
+Addison-Wesley (1976), describes and implements a Unix macro-processor
+language, which inspired Dennis Ritchie to write 'm3', a macro processor
+for the AP-3 minicomputer.