What is LISP (from comp.lang.lisp)

Started by HPW, September 01, 2004, 10:50:58 PM

Previous topic - Next topic

HPW

Quote
Von:Ray Dillinger (bear@sonic.net)

Betrifft:Re: Deep Typing for Plain Old Lists - A new kind of LISP?

 

 

View this article only

Newsgroups:comp.lang.lisp, comp.lang.scheme

Datum:2004-09-01 13:20:15 PST

 



Christopher C. Stacy wrote:

>>>>>>On 31 Aug 2004 20:43:16 -0700, Bill Birch ("Bill") writes:

>

>  Bill> OK let's clarify. LISP <> Lisp. CLOS is part of Common Lisp but not

>  Bill> part of LISP. LISP came before Common Lisp and Scheme.

>

> What is this "LISP" you speak of and where can I read

> the language spec download an implementation?

>



http://www.paulgraham.com/rootsoflisp.html">http://www.paulgraham.com/rootsoflisp.html



LISP is a language design, not a language.  There have been many

different languages which were (and are) LISP.  Scheme is a LISP;

Common Lisp is a LISP; so are Oaklisp, Eulisp, Elisp, Zetalisp,

Autolisp, ....  Some folks would even include languages like OPS5,

New Lisp, Haskell, and Dylan in the design space.



It began as a mathematician's attempt to create a mathematical

model of computation, based on the lambda calculus rather than

on the Turing machine. I think the original paper outlined

seven things a LISPy language needed to be complete; any language

that has those things, or facilities isomorphic to them, is a LISP,

regardless of its surface syntax.  "Mainstream" languages have

been edging ever nearer to LISP as they grow more powerful; sooner

or later somebody is going to add one more thing to the latest

popular or experimental programming language and come full circle

by reinventing LISP.



LISP is traditionally implemented with a fully parenthesized prefix

syntax, macros that work on the parse tree rather than on strings

of source code, automatic memory management, a heavy reliance on

pair and list-based data structures, and dynamic typing (that is,

it's values rather than variables which have types).  Different

people have different ideas about whether a language can lack any

particular combination of these and still be a LISP.



   Bear
Hans-Peter

tom

#1
QuoteSome folks would even include languages like OPS5,

New Lisp, Haskell, and Dylan in the design space.


what about newlisp is not lisp-like, so that only "some folks" would include it?

HPW

#2
It is not a ANSI Common Lisp.



I would include it definatly.



Other arguments here:

http://www.newlisp.org/index.cgi?page=FAQ">http://www.newlisp.org/index.cgi?page=FAQ
Hans-Peter

nigelbrown

#3
Quote from: "HPW"It is not a ANSI Common Lisp.


The original Lisp 1.5 was not Common Lisp either!

Some base it (being a true lisp) on the existence of dotted pair cons in the list structures?

while in newlisp

"The cons of two atoms in newLISP does not yield a dotted pair but rather a list with two elements."



Nigel

Lutz

#4
The notion of a dotted pair is not necessary to define a LISP, but the notion of a pair (without the 'dotted') is important in LISP, e.g. to define property lists, which are lists of attribute<->value pairs.



Pairs can be created in newLISP (and any other LISP) using the cons and/or list primitive.



When defining LISP by itself pairs occur but don't need to be dotted pairs. See as an example Paul Grahams http://www.paulgraham.com/rootsoflisp.html">http://www.paulgraham.com/rootsoflisp.html and http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/jmc.lisp">http://lib1.store.vip.sc5.yahoo.com/lib ... m/jmc.lisp">http://lib1.store.vip.sc5.yahoo.com/lib/paulgraham/jmc.lisp , which is a definition of LISP using Common Lisp. No dotted pairs occur here but a pair function is defined to make property lists.



Similar to Paul Graham's example of defining LISP in Common Lisp, newLISP could be used to define LISP by only using quote, atom?, =, cons, first, rest and cond (In Common Lisp: quote, atom, eq, cons, car, cdr, cond).



The notion of a dotted pair was important in early LISP implementations where a LISP cell was respresented by one computer word in memory holding two atoms (a pair) or one atom and a pointer to the next LISP cell. But pairs can also be seen as a special form of a list (with two members). Making the notion of the 'dot' unnecessary (using two cells to store the pair).



newLISP is as much a LISP as are Common Lisp or SCHEME, and much closer to those than the OPS5, Haskell and Dylan languages mentioned by the poster on comp.lang.lisp/scheme.





Lutz

Lutz

#5
Here is a new page on the newlisp.org website discussing differences of newLISP to other LISPs: http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs">http://www.newlisp.org/index.cgi?page=D ... ther_LISPs">http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs



The page is also linked to from the the FAQ in http://www.newlisp.org/index.cgi?page=FAQ">http://www.newlisp.org/index.cgi?page=FAQ



Lutz