Hacker News new | past | comments | ask | show | jobs | submit login
Before you start learning Lisp... (abhishek.geek.nz)
76 points by fogus on Sept 8, 2009 | hide | past | favorite | 27 comments



From the article:

> This is because the Lisp standard tries to specify a portable language, not a library.

> Note that even the C language doesn't include these things.

That's true, but the POSIX standard library functions are packaged with almost any C environment except for embedded systems and is usually available 'out of the box'.

Of course there is a clear distinction between what is part of the language and what is part of the library.

Is there an equivalent to so say 'stdlib' in the LISP world ?


Not for Common Lisp (CL), but a lot of what's in 'stdlib' for C is already in CL. Also a lot of implementations come with substantial extras, like f.e. sockets, that the article mentioned are not in the CL standard.

Incompatibilities in those extras between implementations are handled by meta-packages (libraries or modules in other programming languages) provided by the community.


Not really. Much of the stuff in stdlib is part of the CL standard. Most of the rest is available as part of most implementations. There is no (as I recal) standard library that every has and can expect to be available.


Should be titled "Before you start learning Common Lisp". Anyone with a reasonable functional programming background would know the difference.


See the last point in the write-up.


I'm interested in learning Scheme, and keeping my fingers crossed that they can come together and specify some kind of "batteries-included" standard library. Otherwise, I'm afraid I'll only be able to fiddle with Scheme for an hour or two on weekends and get my real work done with one of the "popular" languages (i.e., Perl, Python, etc.).

Yes, I realize PLT has some batteries included but I'd prefer a community standard rather than a one-distro standard (not that I think (or even have much of an idea if) anything is wrong with PLT).


Your fingers are going to be crossed for a long time. I think the Steering Committee has too many divergent interests on it for there ever to be agreement on a serious standard library. Schemers are very DIY; for example, see http://philosecurity.org/2009/01/12/interview-with-an-adware.... Rolling your own libraries on top of a tiny implementation is not particularly uncommon. (I just hope you can write more, uh, ethical software than that guy!)

PLT has the most batteries of any distro I've ever seen (disclaimer: one of its authors was my undergrad advisor). That is, PLT is (a) free, (b) mature, and (c) has a fair number of modules written by people other than the developers of the language.

There's no sense in waiting, just dive in. If you don't want to use PLT, Bigloo can call Java libraries---solving your battery problem in a different way.


> Your fingers are going to be crossed for a long time.

Hm. That's going to make it very difficult to type.

> I think the Steering Committee has too many divergent interests on it for there ever to be agreement on a serious standard library.

That would be most unfortunate.

> Schemers are very DIY; for example, see [snip]

Not sure what about that story points to Schemers being particularly DIY. Sounds like the fellow needed something tiny, so rather than take a full-blown batteries-included language and strip out what he didn't need, he instead just used something small that he was familiar with.

> There's no sense in waiting, just dive in.

Yeah. Trying to make the time... thanks for the encouragement. :)


Does anybody have a good elsip project idea?

I been trying to learn elisp but I didn't have good enough excuses to write anything in elisp.


write a hacker news reader so I won't have to exit emacs for that.


HN is pretty usable in w3m / emacs-w3m.

To log in you will have to patch your w3m to send "Content-Length" instead of "Content-length" (see http://arclanguage.org/item?id=4419 )


Excellent idea, that's something I would use.


why does it say LISP isn't a functional programming language but Clojure is? Isn't Clojure a dialect of Lisp?


The article was written by someone who seems to believe "Lisp" is synonymous with "Common Lisp" (We're talking about Common Lisp instead, often shortened to "Lisp").

So it seems Clojure (and Scheme, Arc, etc) are implicitly excluded by the author.


No, Scheme is Scheme, and Arc is Arc. You don't call Ruby a Python, despite that those languages are much closer than Lisp and Scheme.


And Common Lisp is Common Lisp. They're still dialects of the mythical Lisp. Was there ever an actual just Lisp? Or was there just dialects, eg ZetaLisp, Emacs Lisp, MIT's Lisp Machine Lisp, etc etc


There was an original LISP dialect; a quick Google search / Wikipedia session yielded this memo about a LISP 1.5 compiler written in 1962:

ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf

Also there's LISP 1.5 Programmer's Manual dated August 17, 1962 which is quite an interesting read: http://www.softwarepreservation.org/projects/LISP/book/LISP%...


Ok, I stand corrected. Thanks for the links, btw, I'll enjoy reading them :-)


Common Lisp was a joint effort to make a good, portable, featureful Lisp specification. All the parties you mentioned were on the ANSI standard panel, hence "Common" and hence "Lisp".

Scheme was never a part of that effort and indeed it shouldn't have been, as it is a standalone language with its objectives and different semantics. It also at no point was ever called LISP, it was Scheme from the very first memo. It is extremely uncommon to Schemer to refer to his code as "I programmed it in Lisp", there is certainly its own, formed identity among the users.

LISP itself stems from original McCarthy implementation; its name bears the legacy of 7-bit teletypes of the day. But this point is well elaborated in the write-up we discuss.


There were dozens of Lisps before Common Lisp, including Scheme. Is there a reason why there can't be any Lisps after it?


The nomenclature goes something like this. The common noun "lisp" refers to the family of languages; the proper noun "Lisp" refers to Common Lisp; and "LISP" refers to obsolete lisp dialects from long before Lisp's time.

Generally, lisps are not necessarily functional, though some dialects are, to varying degrees. Common Lisp isn't very functional at all; Scheme is much more functional; and Clojure is quite strongly functional.


I believe it's because Clojure constrains itself to immutable data structures, while Lisp allows both mutable and immutable structures. You can do functional programming in Lisp -- like you can many other non-functional languages -- but it isn't required as it is in Clojure.


Clojure has mutable data structures now. Apparently it was too hard to write a compiler to figure out what could be mutated, so now it's up to the programmer to perform that optimization.


The author forgets to specify, but he is talking about Common Lisp, not Lisp in general.


While we're at it, the name "LISP" is obsolete. It's reminiscent of variants of the broader lisp family of languages, circa 1980. We're talking about Common Lisp instead, often shortened to "Lisp", being a much more modern language."

(Unless the author added that after the OP was submitted)


I'm sorry, I mistated, the author forgat to specify what he meant by 'Lisp' before writting a page and a half on it. He did get around to it near the end of the article when all of the laypeople left confused about Lisp.


I've added a note at the top disambiguating the term too. Thanks for the feedback. :-)




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

Search: