Skip to content

Maclisp

Eric Swenson edited this page Jul 10, 2023 · 4 revisions

The ITS Lisp is called Maclisp, or PDP-10 Maclisp if necessary to disambiguate it from Multics Maclisp. Its direct ancestor is PDP-6 LISP. It was developed at MIT's Project MAC, which became the MIT Laboratory for Computer Science (LCS).

Maclisp was descended from the LISP 1.5 dialect. Maclisp differs from Lisp 1.5 in that it includes a value cell to store the dynamic value of variables, whereas Lisp 1.5 use an association list. Maclisp adds support for reader macros, such as ' and # to make cumbersome list structure more easy to read and write. It also added an autoload feature, so that the interpreter could dynamically load functions from the file system. Maclisp adds a wealth of special forms and functions, and other capabilities over Lisp 1.5. For example, it is possible to interface to the underlying operating system in Maclisp, obviating the need to write in assembly language, unless the speed advantage afforded by native binaries is required.

Maclisp included a compiler, an assembler, a debugger, a rich I/O system, and many dynamically loaded packages, such as the following:

  • DEFSTRUC, for structure definitions and accessor macros
  • LOOP, for a sophisticated iteration construct
  • SETF, for destructured binding
  • BACKQ, for a reader macro that obviates cumbersome lisp structure
  • FORMAT, a rich package for formatting strings
  • GRIND, for formatting Lisp S-expressions
  • LET, for local bindings
  • SHARPM, for another reader macro that allows, among other things, conditionalized code
  • VECTOR, for vector data structures

Maclisp also included compatibility packages to make the transition or use of Lisp Machine Lisp or NIL easier.

The biggest difference from Multics Maclisp is the PDP-10 version does not have a "real" string data type; the PDP-10 Maclisp string is just a symbol with a special property. The good news is the ''format'' pretty printer function is still available to build strings with complex contents.

Interlisp, Lisp Machine Lisp, NIL, Franz Lisp, Common Lisp, and other lisp dialects were born from Maclisp. Maclisp isn't in use today, except on emulated systems, having been replaced primarily by Common Lisp.