Hacker News new | past | comments | ask | show | jobs | submit login

> You mentioned Common Lisp - it's a great example of a cathedral. A language carefully designed by a committee, which took into consideration all the previous Lisps that were in popular usage. You can tell there was a lot of thought behind the process.

Common Lisp was designed as a unified successor to Maclisp, in response to an ARPA request.

Not to Scheme, Interlisp, Lisp 1.6, Standard Lisp, Lisp 2, LeLisp, ....

Scheme was further developed. Interlisp died, Standard Lisp had a Portable Standard Lisp variant and then mostly died. Lisp 2 was dead before, LeLisp died later.

The core of Common Lisp was designed in 1982/1983, decided mostly by a small team of Lisp implementors (those had their own Maclisp successors) with a larger group of people helping out.

1984 a book was published on the language and implementations followed.

Standardization then came as a more formal process later with goal of creating an ANSI CL standard - again it was mostly US-based, paid by ARPA. Areas were defined (language clean-up, objects and error handling), .... Proposals were made (like Common LOOPS by Xerox) and then subgroups implemented and specified those (CLOS, ...).

> You can tell there was a lot of thought behind the process.

There were a lot of people involved. Not just the X3J13 committee. It was also a community effort at that time.

https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node3.html#SE...




A fun thing to do when you find someone who really likes Common Lisp: ask them to explain the loop sub-language in detail.

JK. They might starve to death before they finish.

The greatest thing about CL is that it has so many features that you can use to make a CL-lover look like a deranged nutbar.


It's fully unclear, why I should explain all the features in detail to someone. I'd never do that and I know nobody who would be interested in it.

You don't need to know all of it in detail. It's good to have an overview and look up details as needed.

In a numerics library, I don't need to know every function in detail. I just look it up on demand.

Hyperbolic tangent for complex numbers? I don't know the details. Learning all is fruitless. When I need it, I look it up.

> They might starve to death before they finish.

Teach Yourself Programming in Ten Years. Why is everyone in such a rush? http://norvig.com/21-days.html

Java JEE in detail? Oops.

The Haskell type system in detail? Ooops.

> The greatest thing about CL is that it has so many features that you can use to make a CL-lover look like a deranged nutbar.

Wait until you get 'Scheme R7RS large'. Ever looked at recent languages specs for languages like Scala, Haskell, Java 8, Fortress, Ada, the coming Java 9, Racket, C++, ...

One thing you need to learn about Lisp languages: the language is not fixed. It can be an arbitrary amount of features, even user supplied.

What you need to learn is not all the features of one construct. What you need to learn is how to learn the details incrementally on demand, while having an overview of the concepts.

If you think LOOP is large and complicated, have a look at Common Lisp's ITERATE: even more features and more powerful. Even designed to be user extensible.

https://common-lisp.net/project/iterate/

And it's totally great.


Now look, I like Lisp. Common Lisp was the first language I fell in love with. I remember it fondly, even though at this point I prefer Scheme.

But you have to admit that there's something a little...off...about having an iteration sub-language with a 43 page (in PDF) manual. And I mean sub-language literally; one of the advertised features of ITERATE is that it has a more Lispy syntax, so your editor has a hope of indenting it correctly.


I find it very handy and use it all the time. Luckily there are LOOP versions for Scheme and Racket as well:

http://wiki.call-cc.org/eggref/4/loop

https://planet.racket-lang.org/display.ss?package=loop.plt&o...

LOOP is actually not a CL specific language construct and did not originate there. It was invented by Warren Teitelman for Interlisp. There it was called FOR. From there it was ported/reimplemented and extended to several Lisp dialects.




Consider applying for YC's first-ever Fall batch! Applications are open till Aug 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: