What is LISP (from comp.lang.lisp)

Notices and updates
Locked
HPW
Posts: 1390
Joined: Thu Sep 26, 2002 9:15 am
Location: Germany
Contact:

What is LISP (from comp.lang.lisp)

Post by HPW »

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

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
Posts: 168
Joined: Wed Jul 14, 2004 10:32 pm

Re: What is LISP (from comp.lang.lisp)

Post by tom »

Some 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
Posts: 1390
Joined: Thu Sep 26, 2002 9:15 am
Location: Germany
Contact:

Post by HPW »

It is not a ANSI Common Lisp.

I would include it definatly.

Other arguments here:
http://www.newlisp.org/index.cgi?page=FAQ
Hans-Peter

nigelbrown
Posts: 429
Joined: Tue Nov 11, 2003 2:11 am
Location: Brisbane, Australia

Post by nigelbrown »

HPW wrote: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
Posts: 5289
Joined: Thu Sep 26, 2002 4:45 pm
Location: Pasadena, California
Contact:

Post by Lutz »

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 and http://lib1.store.vip.sc5.yahoo.com/lib ... m/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
Posts: 5289
Joined: Thu Sep 26, 2002 4:45 pm
Location: Pasadena, California
Contact:

Post by Lutz »

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

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

Lutz

Locked