Live data from Hacker News

Dinosaur and Lisp

vito.sdf.org

71–80 of 97 posts

Re: Dinosaur and Lisp

#71
post #65
post #55

Earlier quoted context omitted.

Maclisp came from Lisp 1.5. Code was simply ported to Maclisp. Some Lisp 1.5 code runs mostly unchanged in CL. Maclisp shared code with Common Lisp. For a lot of stuff there was a single code base at MIT for several Lisp dialects, including Maclisp. After some time Maclisp development ended and sharing ended. For example the source code for the complex LOOP macro was at one time a single file for Maclisp, NIL, Lisp M…

What is the point of this genealogy? What makes a language a Lisp is (i) natural and practical homoiconicity with sexps, (ii) automatic memory management and (iii) advanced interactive development features, including the REPL, the image, restarts and hot code loading. These are the features that distinguish it and make it an advanced tool. (i) is quite particular to it, (ii) is invented for it and (iii) is a big part…

Those aren't what make a language a Lisp. There are Lisps without Automatic Memory Management, there are Lisps without restarts or images (although hot code loading is fairly common, and I've never seen a Lisp without a repl). Homoiconic expressions are an important part of it, but there are many lisps without macro systems.

I'm a Schemer, and Scheme IS a lisp: we don't have restarts, but we do have call/cc, and images as Lisp has them are an optimization hack in any case. And we're finally getting some well supported implementations. Yes, we have hot code loading in most implementations.

Come to the dark side, we have (lexical) cookies (encoded with the current continuation after baking, of course).

Re: Dinosaur and Lisp

#72
post #61

Earlier quoted context omitted.

rolls eyes Not German, Clojure. Clojure is pretty easy.

Really? You must be really good at Clojure. Then you can explain this: user=> (list 1 2 3) (1 2 3) user=> (list? (list 1 2 3)) true so (1 2 3) is a list. user=> (cons 0 (list 1 2 3)) (0 1 2 3) user=> (list? (cons 0 (list 1 2 3))) false (0 1 2 3) is not a list? user=> (list? '(0 1 2 3)) true But then it is??? WTF? Compare ELISP: ELISP> (listp (list 1 2 3)) t ELISP> (listp (cons 0 (list 1 2 3))) t and CL: CL-USER> (lis…

Try TXR Lisp; you will be charmed.

http://www.nongnu.org/txr

Re: Dinosaur and Lisp

#73
post #66

Earlier quoted context omitted.

Clojure has a primitive repl by default with lots of Java shining through. It has no image dumping. No restarts. Hot code loading is limited. Clojure even has no interpreter.

Need I mention that Lisp 1.5 had no restarts, and that image dumps are primarily a hack, and not at the core of lisp by a long shot?

Images are not a hack. They allow us to save the state of a program and use it later. My Lisp Machine at home would not even work without it. It's the software the machine boots into.

Image dumps are also a useful way to create applications or use pre-assembled program state during development. Makes faster startup times, than loading objects during start each time.

Even an editor like GNU Emacs boots up a Lisp image. Which makes it much faster than loading code at start.

Re: Dinosaur and Lisp

#74
post #63

Earlier quoted context omitted.

> AIM-349 describes scheme as "essentially a full-funarg LISP That's long ago. That was kind of true in the mid 70s. > and no compatability with Racket is ridiculus CL has no Racket compatibility. Zero. Racket has no CL compatibility. Zero. Porting programs is a full rewrite. > Clojure's website claims it is a "dialect of lisp," Best it is a new language, derived from Lisp and influenced by C++, C#, Common Lisp, Erla…

So scheme WAS a lisp, and now isn't? What changed that makes you think that? And it had better not be nil/false equality. Even McCarthy says that was, if not a mistake, then an accident. As for Clojure not having Lisp lists, its list implementation is... eccentric, but it DOES have lists. Actually, scratch that, its list implementation, from a Lisp perspective is broken. Psychotically broken. But it DOES have one. Ev…

> What changed that makes you think that?

R6RS

> As for Clojure not having Lisp lists, its list implementation is... eccentric, but it DOES have lists.

Lazy persistent sequences is the basic abstraction.

Re: Dinosaur and Lisp

#75
post #65

Earlier quoted context omitted.

What is the point of this genealogy? What makes a language a Lisp is (i) natural and practical homoiconicity with sexps, (ii) automatic memory management and (iii) advanced interactive development features, including the REPL, the image, restarts and hot code loading. These are the features that distinguish it and make it an advanced tool. (i) is quite particular to it, (ii) is invented for it and (iii) is a big part…

Those aren't what make a language a Lisp. There are Lisps without Automatic Memory Management, there are Lisps without restarts or images (although hot code loading is fairly common, and I've never seen a Lisp without a repl). Homoiconic expressions are an important part of it, but there are many lisps without macro systems. I'm a Schemer, and Scheme IS a lisp: we don't have restarts, but we do have call/cc, and imag…

What I list is why I highly esteem lisp. I can't see ho it's advantageous to use without them.

Re: Dinosaur and Lisp

#76
post #61

Earlier quoted context omitted.

Really? You must be really good at Clojure. Then you can explain this: user=> (list 1 2 3) (1 2 3) user=> (list? (list 1 2 3)) true so (1 2 3) is a list. user=> (cons 0 (list 1 2 3)) (0 1 2 3) user=> (list? (cons 0 (list 1 2 3))) false (0 1 2 3) is not a list? user=> (list? '(0 1 2 3)) true But then it is??? WTF? Compare ELISP: ELISP> (listp (list 1 2 3)) t ELISP> (listp (cons 0 (list 1 2 3))) t and CL: CL-USER> (lis…

Try TXR Lisp; you will be charmed. http://www.nongnu.org/txr

Thanks kaz, but I've already got the manpage bookmarked. I haven't looked at it in-depth yet, but it seems to be awk, but better, which is pretty awesome.

Re: Dinosaur and Lisp

#77
post #75

Earlier quoted context omitted.

Those aren't what make a language a Lisp. There are Lisps without Automatic Memory Management, there are Lisps without restarts or images (although hot code loading is fairly common, and I've never seen a Lisp without a repl). Homoiconic expressions are an important part of it, but there are many lisps without macro systems. I'm a Schemer, and Scheme IS a lisp: we don't have restarts, but we do have call/cc, and imag…

What I list is why I highly esteem lisp. I can't see ho it's advantageous to use without them.

...Well, then, maybe cast your net a bit wider? There are plenty of other reasons to use lisps.

Re: Dinosaur and Lisp

#78
post #73

Earlier quoted context omitted.

Need I mention that Lisp 1.5 had no restarts, and that image dumps are primarily a hack, and not at the core of lisp by a long shot?

Images are not a hack. They allow us to save the state of a program and use it later. My Lisp Machine at home would not even work without it. It's the software the machine boots into. Image dumps are also a useful way to create applications or use pre-assembled program state during development. Makes faster startup times, than loading objects during start each time. Even an editor like GNU Emacs boots up a Lisp image…

They're an optimization in most dialects that support it: it's not like Smalltalk, where you can reload your app state and continue exactly where you left off.

Re: Dinosaur and Lisp

#79

Earlier quoted context omitted.

So scheme WAS a lisp, and now isn't? What changed that makes you think that? And it had better not be nil/false equality. Even McCarthy says that was, if not a mistake, then an accident. As for Clojure not having Lisp lists, its list implementation is... eccentric, but it DOES have lists. Actually, scratch that, its list implementation, from a Lisp perspective is broken. Psychotically broken. But it DOES have one. Ev…

> So scheme WAS a lisp, and now isn't? EINE: Eine is not Emacs. ZWEI: Zwei was Eine, Initially. And, thus: SWALANI: Swalani Was A Lisp, And Now Isn't. A dialect waiting to be invented. :) What might be a recursive acronym for Scheme, though? Oh, oh ... I just got one: "Scheme Crams Hygiene into Every Macro Expansion."

It doesn't, for the record. Not any implementation that you'd use.

The acronym's good though, I just didn't want anybody else thinking that was true, given how many people already do.

Re: Dinosaur and Lisp

#80
post #74

Earlier quoted context omitted.

So scheme WAS a lisp, and now isn't? What changed that makes you think that? And it had better not be nil/false equality. Even McCarthy says that was, if not a mistake, then an accident. As for Clojure not having Lisp lists, its list implementation is... eccentric, but it DOES have lists. Actually, scratch that, its list implementation, from a Lisp perspective is broken. Psychotically broken. But it DOES have one. Ev…

> What changed that makes you think that? R6RS > As for Clojure not having Lisp lists, its list implementation is... eccentric, but it DOES have lists. Lazy persistent sequences is the basic abstraction.

Uggghh. R6RS was an absolute mess. But I'd still say it was a lisp.

Have you looked at R7RS, the latest spec, that goes back to the drawing board on a lot of the stuff R6RS did?

Post reply on HN