Maclisp
   HOME

TheInfoList



OR:

Maclisp (or MACLISP, sometimes styled MacLisp or MacLISP) is a
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
, a
dialect A dialect is a Variety (linguistics), variety of language spoken by a particular group of people. This may include dominant and standard language, standardized varieties as well as Vernacular language, vernacular, unwritten, or non-standardize ...
of the language
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
. It originated at the
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a Private university, private research university in Cambridge, Massachusetts, United States. Established in 1861, MIT has played a significant role in the development of many areas of moder ...
's (MIT) Project MAC (from which it derived its prefix) in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the
PDP-6 The PDP-6, short for Programmed Data Processor model 6, is a computer developed by Digital Equipment Corporation (DEC) during 1963 and first delivered in the summer of 1964. It was an expansion of DEC's existing 18-bit systems to use a 36-bit da ...
; Jon L. White was responsible for its later maintenance and development. The name ''Maclisp'' began being used in the early 1970s to distinguish it from other forks of PDP-6 Lisp, notably BBN Lisp.


History

Maclisp is a descendant of Lisp 1.5. Maclisp departs from Lisp 1.5 by using a ''value cell'' to access and store the dynamic values of variables; Lisp 1.5 used a linear search of an association list to determine a variable's value. The Maclisp variable evaluation is faster but has different variable semantics. Maclisp also employed reader macros to make more readable ''input'' and ''output'', termed
input/output In computing, input/output (I/O, i/o, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, such as another computer system, peripherals, or a human operator. Inputs a ...
(I/O). Instead of entering (QUOTE A), one could enter 'A to get the same
s-expression In computer programming, an S-expression (or symbolic expression, abbreviated as sexpr or sexp) is an expression in a like-named notation for nested List (computing), list (Tree (data structure), tree-structured) data. S-expressions were invented ...
. Although both implementations put functions on the property list, Maclisp uses different syntax to define functions. Maclisp also has a load-on-demand feature. Maclisp began on
Digital Equipment Corporation Digital Equipment Corporation (DEC ), using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president until ...
PDP-6 The PDP-6, short for Programmed Data Processor model 6, is a computer developed by Digital Equipment Corporation (DEC) during 1963 and first delivered in the summer of 1964. It was an expansion of DEC's existing 18-bit systems to use a 36-bit da ...
and
PDP-10 Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, especi ...
computers running the Incompatible Timesharing System (ITS); later it was ported to all other PDP-10 operating systems, for example, ''Timesharing / Total Operating System'', TOPS-10 and TOPS-20. The original implementation was in
assembly language In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
, but a later implementation on
Multics Multics ("MULTiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of t ...
used
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has b ...
. Maclisp developed considerably in its lifetime. Major features were added which in other language systems would typically correspond to major release numbers. Maclisp was used to implement the Macsyma
computer algebra system A computer algebra system (CAS) or symbolic algebra system (SAS) is any mathematical software with the ability to manipulate mathematical expressions in a way similar to the traditional manual computations of mathematicians and scientists. The de ...
(CAS) or symbolic algebra program. Macsyma's development also drove several features in Maclisp. The
SHRDLU SHRDLU is an early natural-language understanding computer program that was developed by Terry Winograd at MIT in 1968–1970. In the program, the user carries on a conversation with the computer, moving objects, naming collections and query ...
blocks-world program was written in Maclisp, and so the language was in widespread use in the
artificial intelligence Artificial intelligence (AI) is the capability of computer, computational systems to perform tasks typically associated with human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making. It is a field of re ...
(AI) research community through the early 1980s. It was also used to implement other programming languages, such as Planner and Scheme. Multics Maclisp was used to implement the first Lisp-based
Emacs Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
. Maclisp was an influential Lisp implementation, but is no longer maintained actively. It now runs on PDP-10
emulator In computing, an emulator is Computer hardware, hardware or software that enables one computer system (called the ''host'') to behave like another computer system (called the ''guest''). An emulator typically enables the host system to run sof ...
s and can be used for experimenting with early AI programs.


Characteristics

Maclisp began with a small, fixed number of
data type In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
s: cons cell, atom (later termed ''symbol''),
integer An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
, and floating-point number. Later additions included:
arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
, which were never first-class data types; arbitrary-precision integers (bignums); strings; and
tuple In mathematics, a tuple is a finite sequence or ''ordered list'' of numbers or, more generally, mathematical objects, which are called the ''elements'' of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is o ...
s. All objects (except inums) were implemented as pointers, and their data type was determined by the block of memory into which it pointed, with a special case for small numbers (inums). Programs could be '' interpreted'' or '' compiled''. Compiled behavior was the same as interpreted except that local variables were lexical by default in compiled code, unless declared SPECIAL, and no error checking was done for inline operations such as CAR and CDR. The Ncomplr compiler (mid-1970s) introduced fast numeric support to Lisp languages, generating
machine code In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
(instructions) for arithmetic rather than calling interpretive routines which dispatched on data type. This made Lisp arithmetic comparable in speed to Fortran for scalar operations (though Fortran array and loop implementation remained much faster). The original version was limited by the 18-bit word
memory address In computing, a memory address is a reference to a specific memory location in memory used by both software and hardware. These addresses are fixed-length sequences of digits, typically displayed and handled as unsigned integers. This numeric ...
of the PDP-10, and considerable effort was expended in keeping the implementation lean and simple. Multics Maclisp had a far larger address space, but was costly to use. When the memory and processing power of the
PDP-10 Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, especi ...
were exceeded, the Lisp Machine was invented: Lisp Machine Lisp is the direct descendant of Maclisp. Several other
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
dialects were also in use, and the need to unify the community resulted in the modern
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
language.


Name

Maclisp was named for Project MAC, and is unrelated to Apple's
Macintosh Mac is a brand of personal computers designed and marketed by Apple Inc., Apple since 1984. The name is short for Macintosh (its official name until 1999), a reference to the McIntosh (apple), McIntosh apple. The current product lineup inclu ...
(Mac) computer, which it predates by decades or to John McCarthy. The various Lisp systems for the Macintosh have no particular similarity to Maclisp.


References


External links

* http://www.softwarepreservation.org/projects/LISP/maclisp_family/ contains a bibliography of Maclisp. ** John L. White. An Interim LISP User's Guide. Artificial Intelligence Memo No. 190, Project MAC, Massachusetts Institute of Technology, March 1970, 87 pages. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf states "'MACLISP' refers to the PDP/6 implementation of the programming language LISP in use at the Artificial Intelligence Group of Project MAC." ** "In 1973 and 1974, David A. Moon led an effort to implement MacLisp on the Honeywell 6180 under Multics. As a part of this project he wrote the first truly comprehensive reference manual for Maclisp, which became familiarly known as the 'Moonual'." teele and Gabriel 1993** Jon L. White ONL Eric Rosen CR Richard M. Stallman MS Guy L. Steele Jr. LS Howard I. Cannon IC Bob Kerns WK LISP News. MacLisp release notes. ** Jon L. White. LISP: Program is Data: A Historical Perspective on MacLISP. Proceedings of the 1977 MACSYMA Users' Conference. NASA Scientific and Technical Information Office (Washington, D.C., July 1977), pages 181–189
PDF
* *
''The Revised Maclisp Manual''
(1983) by Kent Pitman
''The Multics MACLISP compiler''
(1977) by Bernard Greenberg {{Multics Lisp programming language family Lisp (programming language) Multics software