(Redirected from MacLISP)
Paradigms | Multi-paradigm: functional, procedural, reflective, meta |
---|---|
Family | Lisp |
Designed by | Richard Greenblatt Jon L. White |
Developer | MIT: Project MAC |
First appeared | July 1966; 54 years ago |
Typing discipline | dynamic, strong |
Implementation language | Assembly language, PL/I |
Platform | PDP-6, PDP-10 |
OS | Incompatible Timesharing System, TOPS-10, TOPS-20, Multics |
Filename extensions | .lisp, .fasl |
Influenced by | |
Lisp 1.5 | |
Influenced | |
Common Lisp |
This page is no longer maintained. Some links may have rotted away. I am leaving this page up for people who are running OS X on the PowerPC Macs as a service. If you have a new Intel based Mac, please see my new '(Lisp Notes (OS X Intel)) page. Jan 31, 2011 Unfortunately, the SBCL maintainers don’t keep the pre-built Mac version up to date, so getting the latest SBCL is a two-step process on Mac OS X. First, hit SBCL’s download page and download both the latest source (1.0.45 at the time of writing) and the latest Mac binary (1.0.29). I’m using a 64-bit SBCL, but 32-bit should work fine as well. LispWorks for Macintosh is a full native implementation of ANSI Common Lisp for Mac OS X. There are separately-licensed 32-bit and 64-bit products. LispWorks (32-bit) for Macintosh supports Intel-based Macintosh computers and is available in five Editions. Ready Lisp: Ready Lisp is a binding together of several popular Common Lisp packages especially for Mac OS X, including: Aquamacs, SBCL and SLIME. Once downloaded, you’ll have a single application bundle which you can double-click – and find yourself in a fully configured Common Lisp REPL.
Maclisp (or MACLISP, sometimes styled MacLisp or MacLISP) is a programming language, a dialect of the language Lisp. It originated at the Massachusetts Institute of Technology's (MIT) Project MAC[1] (from which it derived its prefix) in the late 1960s and was based on Lisp 1.5.[2]Richard Greenblatt was the main developer of the original codebase for the PDP-6;[1] 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[edit]
Maclisp is a descendant of Lisp 1.5.[3] Maclisp departs from Lisp 1.5 by using a value cell to access and store the dynamic values of variables;[4] Lisp 1.5 used a linear search of an association list to determine a variable's value.[5] 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 (I/O). Instead of entering
(QUOTE A)
, one could enter 'A
to get the same s-expression. Although both implementations put functions on the property list, Maclisp uses different syntax to define functions.[6] Maclisp also has a load-on-demand feature.[7]Maclisp began on Digital Equipment CorporationPDP-6 and PDP-10 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, but a later implementation on Multics used PL/I. Maclisp developed considerably in its lifetime. Major features[which?] were added which in other language systems would typically correspond to major release numbers.[dubious]
Mac Os Update
Maclisp was used to implement the Macsymacomputer algebra system (CAS) or symbolic algebra program. Macsyma's development also drove several features[which?] in Maclisp. The SHRDLU blocks-world program was written in Maclisp, and so the language was in widespread use in the artificial intelligence (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.
Maclisp was an influential Lisp implementation, but is no longer maintained actively. It now runs on PDP-10 emulators and can be used for experimenting with early AI programs.
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(abandoned) | |||||||||||||
Maclisp | |||||||||||||
Interlisp | |||||||||||||
Lisp Machine Lisp | |||||||||||||
Scheme | R5RS | R6RS | R7RS small | ||||||||||
NIL | |||||||||||||
Franz Lisp | |||||||||||||
Common Lisp | |||||||||||||
Le Lisp | |||||||||||||
T | |||||||||||||
Chez Scheme | |||||||||||||
Emacs Lisp | |||||||||||||
AutoLISP | |||||||||||||
PicoLisp | |||||||||||||
EuLisp | |||||||||||||
ISLISP | |||||||||||||
OpenLisp | |||||||||||||
PLT Scheme | Racket | ||||||||||||
GNU Guile | |||||||||||||
Visual LISP | |||||||||||||
Qi, QiII | Shen | ||||||||||||
Clojure | |||||||||||||
Arc | |||||||||||||
LFE | |||||||||||||
Hy |
Characteristics[edit]
Maclisp began with a small, fixed number of data types: cons cell, atom (later termed symbol), integer, and floating-point number. Later additions included: arrays, which were never first-class data types; arbitrary-precision integers (bignums); strings; and tuples. 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,[8] 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 (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 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 were exceeded, the Lisp Machine was invented: Lisp Machine Lisp is the direct descendant of Maclisp. Several other Lisp dialects were also in use, and the need to unify the community resulted in the modern Common Lisp language.
Name[edit]
Maclisp was named for Project MAC, and is unrelated to Apple's Macintosh (Mac) computer, which it predates by decades. The various Lisp systems for the Macintosh have no particular similarity to Maclisp.[9]
References[edit]
- ^ abLevy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN0-385-19195-2.
- ^Project MAC Progress Report IV: July 1966 to July 1967(PDF) (Report). n.d. p. 19.
The higher-level language used for most of the vision laboratory program is the PDP-6 LISP System. This system is based chiefly on the LISP 1.5 programming language, but has been extensively modified in a number of ways. These include many new functions and services, including facilities for linking with programs written in other languages.
- ^Moon 1974, p. 1
- ^Moon 1974, p. 47
- ^Lisp 1.5 p. 13, evaluating an atom
e
in the environmenta
is done with(cdr (assoc e a))
. That involves a linear search of the association lista
. A more involved description with global constants and errors is given on p. 71; it does a linear search of the property list before searching the association list. - ^Maclisp uses
defun
; Lisp 1.5 usesdefine
. - ^Moon 1974, p. 107; the
autoload
property. - ^Pitman, Kent (December 16, 2007). 'The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition'. maclisp.info. HyperMeta, Inc. Declarations and the Compiler, Concept 'Variables'. Retrieved October 20, 2018.
If the variable to be bound has been declared to be special, the binding is compiled as code to imitate the way the interpreter binds variables.
- ^Pitman, Kent (December 16, 2007). 'The Revised Maclisp Manual (The Pitmanual), Sunday Morning Edition'. maclisp.info. HyperMeta Inc. p. 1 FAQ q1. Retrieved October 20, 2018.
Project MAC had nothing to do with the Apple 'Mac'. And neither did MACLISP.
Mac Os Catalina
External links[edit]
- 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'.' [Steele and Gabriel 1993]
- Jon L. White [JONL], Eric Rosen [ECR], Richard M. Stallman [RMS], Guy L. Steele Jr. [GLS], Howard I. Cannon [HIC], Bob Kerns [RWK]. 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
- McCarthy, John; Abrahams, Paul W.; Edwards, Daniel J.; Hart, Timothy P.; Levin, Michael I. (1985) [1962]. LISP 1.5 Programmer's Manual (2nd ed.). MIT Press. ISBN0-262-13011-4.CS1 maint: ref=harv (link)
- Moon, David (1974). Maclisp Reference Manual(PDF).CS1 maint: ref=harv (link)
- The Revised Maclisp Manual (1983) by Kent Pitman
- The Multics MACLISP compiler (1977) by Bernard Greenberg
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Maclisp&oldid=981136954'
Setting up for Common Lisp development on Mac OS X
High-level overview:
- Download and install SBCL (http://www.sbcl.org/)
- Download and install Aquamacs (http://aquamacs.org/)
- Download and install Quicklisp (http://www.quicklisp.org/)
- Configure everything so that it plays nice together.
Download and install SBCL
There are several good Common Lisp implementations on Mac OS X. I happen touse SBCL because it worked better with lispbuilder-sdl last time I triedit, so that’s the one I cover here. Clozure CL (http://ccl.clozure.com/)is also very good.
Unfortunately, the SBCL maintainers don’t keep the pre-built Mac version up todate, so getting the latest SBCL is a two-step process on Mac OS X. First, hitSBCL’s download page and download both the latest source (1.0.45 at thetime of writing) and the latest Mac binary (1.0.29). I’m using a 64-bit SBCL,but 32-bit should work fine as well.
Update: This has changed recently; the last several releases of SBCL have beenpre-built for Mac OS X, so you can just grab one of those.
![Update Update](/uploads/1/1/8/9/118985875/566519988.png)
Now fire up Terminal, switch to where you downloaded SBCL, unpack and installit:
That’ll install SBCL into
/usr/local/bin
. At this point you should be able torun sbcl
and get a Lisp prompt:Hit Control-D or type
(quit)
to exit.Now you can run w/ that version, or if you want the latest/greatest you mayneed to build it. (Note: you may need Apple’s developer tools installed forthis; I can’t remember.) Go back to your downloads directory and unpack thesource distribution:
Now you’ll have the latest and greatest SBCL installed.
Download and install Aquamacs
Aquamacs (http://aquamacs.org/) is an Emacs distribution customized torun nicely on Mac OS X. It obeys all the normal Mac shortcut keys, printswell, that sort of thing. Download it, open it up and drag theapplication to your Application directory as you would any other Mac app.
Download and install Quicklisp
Audio to mp3 converter free for mac. Download Quicklisp from http://www.quicklisp.org/. (It’s in beta at thetime this was written, but it’s fully functional and awesome). Download theinstall file (http://beta.quicklisp.org/quicklisp.lisp at the time ofwriting) and save it to disk somewhere easy to find.
Next, run sbcl and type in the following:
After it loads, run:
That’ll download the rest of the system and get it set up for you. Quicklispwill install by default in
~/quicklisp
; you can change that by passing :path'/target/path/'
to the install function.Finally, run:
That’ll add Quicklisp to your init file so that anytime you run SBCL Quicklispwill be loaded and ready to go.
Lisp For Mac Os X
Now go ahead and read on http://www.quicklisp.org/ about how to use it.It’s very easy to search for and install Common Lisp libraries. For example,to get ahold of “ieee-floats” for the previous entry, just run:
That will download the library if it hasn’t already and load it into your CLenvironment for you.
Configure everything so that it plays nice together
SBCL and Quicklisp are already playing nicely together at this point; you justneed to let Aquamacs know about them.
First in SBCL run:
This’ll install SLIME for you,an awesome Common Lisp development environment. It should give you a line toadd to your
.emacs
configuration file:Aquamacs will use
.emacs
, but they recommend keeping your configuration in~/Library/Preferences/Aquamacs Emacs/Preferences.el
. Either will work. You’llneed to both tell Aquamacs how to start your Lisp environment and add theabove line to tell it how to find SLIME. To do that, add the following to yourPreferences.el
:At this point, you should be ready to go. To try it all out, launch Emacs,type Alt-x (Meta-x, technically), and type in “slime”. Hit enter and youshould find yourself at a CL-USER prompt within Emacs.
Now, actually learning to use SLIME is well beyond the scope of this entry.For that, I recommend Peter Seibel’s Practical Common Lisp. Chapter2 covers getting around both in Emacs and SLIME.