Lambda the Ultimate

inactiveTopic Understanding Lispishness
started 1/12/2001; 12:11:23 AM - last post 1/13/2001; 11:35:55 AM
andrew cooke - Understanding Lispishness  blueArrow
1/12/2001; 12:11:23 AM (reads: 614, responses: 4)
Understanding Lispishness
I always thought it was the weak separation between data and code - demonstrated by the reader, macros, and data-driven programming (interesting thread on c.l.lisp).
Posted to "" by andrew cooke on 1/12/01; 12:13:09 AM

Chris Rathman - Re: Understanding Lispishness  blueArrow
1/12/2001; 11:49:26 AM (reads: 613, responses: 0)
When I think of Lisp, I don't think of a language that was designed for any specific programming paradigm. Lisp allows you to do imperative if you want. It also allows you to do functional or object oriented if you are so inclined. Lisp is one of the few languages that can be used for practically any program paradigm ever invented, plus some new ones on down the road.

The problem that I see is that with Lisp being capable of several different idioms, it's easy to get locked into one way of doing things and not ever expand your horizons. Indeed, if what you want is to learn Functional Programming, I'd think that ML or Haskell are a better way to force you to think in a functional paradigm.

But what do I know? I seem to be locked into an OO mindset these days, including for Scheme.

P.S. Just finished the Scheme OO code today, so I just had to work that in somehow. Not as bad as I thought it would be, but the inheritance dispatch could be a bit brittle. :-)

andrew cooke - Re: Understanding Lispishness  blueArrow
1/13/2001; 4:54:21 AM (reads: 615, responses: 0)
That's certainly why I started using Common Lisp, but a few of the "classics" (esp. Norvig's book) seem to emphasise the code/data aspect, and that is something that only Lisp (at least of teh languages I know) seems to do well.

While it's also true that ML (say) is better for forcing you into FP, languages like OCaml are similarly broad these days (I've just converted an Ocaml program that manipulated a purely functional Trie into version with mutable data to try and improve speed - it was surprisingly easy to code, even though it had "the usual" imperative bugs at first)

Ehud Lamm - Re: Understanding Lispishness  blueArrow
1/13/2001; 9:30:49 AM (reads: 599, responses: 0)
When I first heard of Lisp I was told that because code and data re in the same format, the language is ideal for AI. I have come to the conclusion that this is much less important than migh look at first glance.

We should distinguish between Common Lisp and Scheme... When one thinks of overall language philosophy, they are very different.

What I was taught under the name Pure Lisp (i.e., car,cdr,cons,atom,null) is now available in other languages too like ML and Haskell.

I think this core is important since list processing is a very elegant, and consistent way to represent most data structures. History note: This idea predates Lisp, and appears in the work of Simon & Newell (sp?)

When it comes to the language proper I think the S-expression idea gives a consiten view of syntax which is nice, from a theoretical point of view (and maybe quire irritating to unintiated programmers).

As to control flow, I think one must really distinguish Scheme and Lisp. Scheme goes for the simple & universal approach, which I find quite appealing.

But I agree that the idea of stratified design is basic the lispishness.

Historical papers: McCarthy, Stoyan. (No one will be harmed by spending some time on John McCarthy's Home Page ).

Ehud Lamm - Re: Understanding Lispishness  blueArrow
1/13/2001; 11:35:55 AM (reads: 590, responses: 0)
McCarthy ends his paper (see above) by saying:

LISP will become obsolete when someone makes a more comprehensive language that dominates LISP practically and also gives a clear mathematical semantics to a more comprehensive set of features.

Is this ML?