top | item 5603177

Learning Lisp The Bump Free Way

90 points| StylifyYourBlog | 13 years ago |blog.ppenev.com | reply

45 comments

order
[+] brudgers|13 years ago|reply
In regard to getting up and running in Windows, the smoothest FOSS alternative is Lispcabinet. It allows multiple Lisps to be installed (e.g. it will install Clisp, closure, and sbcl), it integrates all of them with SLIME, and installs GNUemacs along with many useful utilities. It is about as painfree as anything which requires learning Emacs can be.

LispIDE is another Windows option. It is very minimal but doesn't require dealing with emacs.

http://lispcabinet.sourceforge.net/

http://www.daansystems.com/lispide/

[+] pnathan|13 years ago|reply
The big problem with libre Lisp is Emacs. I love it to death - most of my time on the computer is spent in Emacs, but a great deal of people absolutely hate it.

One tool that got some love at one point was Cusp, a Lisp plugin for Emacs. Unfortunately, as I note here[1], it's been unloved for some time.

[1] http://articulate-lisp.com/env:cusp-setup.html

[+] tete|13 years ago|reply
I have a question to all LISPers out there. It's just, cause I really don't know. I read a bit about LISP, but never used it or anything. Anyway. Here it is:

Why not Scheme?

[+] rayiner|13 years ago|reply
Common Lisp doesn't (like at all) hew to conceptual elegance and so has a lot more useful stuff built in:

1) CLOS for object-oriented programming;

2) LOOP as a DSL for expressing complex iteration (http://www.gigamonkeys.com/book/loop-for-black-belts.html);

3) Type declarations and a compiler (CMUCL/SBCL) that can take full advantage of them;

4) Better tooling (CMUCL/SBCL + SLIME);

5) More commercial support options (Clozure, LispWorks, Allegro).

R5RS doesn't even have hash tables! You can patch together alternatives for Scheme for most of those things, but the fact that they're not built-in causes problems when integrating code from multiple sources.

[+] dkirkman|13 years ago|reply
There are a few good reasons that one might prefer common lisp to scheme.

It has been stable for a good long time. Which is nice if you've got a giant repository of old code that you dust off and run from time to time.

CL has a standard way of specifying variable types when you want to do so, so it's possible to write high performance numerical code in a portable (across different compilers) manner. Or write macros to write portable code.

My view on macros is that being code transformers, when you write a macro you are basically writing a quick and dirty compiler. And like everything that's quick and dirty, they are full of bugs and gotchas. The fact that CL has separate function and value namespaces helps with decreasing the gotcha cross-section. The scheme community early on spent a lot of time dealing with this and developing hygienic macros, but as a lisper this just always felt a bit heavy. (This is probably just a lack of exposure).

From my perspective, the appeal of scheme as been its more pure focus on functional programming. But when I'm in that sort of mood I just reach for haskell now.

[+] pnathan|13 years ago|reply
Which Scheme? Each Scheme system appears to be slightly and definitely incompatible with the others after a point.

Unlike Common Lisp, which has a well-defined standard.

Unlike Clojure, which, while evolving, is at least compatible with itself.

[+] kruhft|13 years ago|reply
Because you have to write multiple-value-bind yourself, no &optional and &key parameters, no try/catch or condition system and verious other reasons.

Scheme is case sensitive by default though, which I like.

It's sort of like asking 'Why C++ and not C?'. It's the features or lack thereof that you have to want or not want that lead you to your initial decision.

Then you switch to the other to see what you're missing.

Then you make up your mind.

[+] minikomi|13 years ago|reply
Piggybacking on this.. After reading SICP over the new year, I had a look into using Racket for various things, and although it seems to have an excellent, well rounded set of libraries and excellent documentation there seems to be less drive of people doing practical things with the language. Is there a glaring reason why, or is it simply lack of mindshare?
[+] chimeracoder|13 years ago|reply
LISP (or Lisp) is a family of languages, not a single language. There are two main categories of Lisp dialects, the Lisp-1s and the Lisp-2s. Scheme is a Lisp-1.

Scheme is itself not a single language; it's a subcategory of Lisps. The main Scheme standard these days is R6RS (http://www.r6rs.org/), but different implementations may or may not comply with R6RS (Racket does not, for example, even though it was formerly known as PLT Scheme).

Common Lisp is the most well-known Lisp-2, and is what's generally implied when people say 'Lisp', even though that's technically a sloppy use of terminology.

Clojure is another dialect, but people generally specify Clojure and Scheme by name when referring to them. There is no logic behind these nuances of the terminology and their inconsistent usage; it's just what's evolved over the last 50+ years.

So, to answer your question, there's no reason why one should learn Scheme over Common Lisp (or vice versa), if all you're looking to do is learn the concepts.

There are differences between the different dialects (and their many implementations), but if you're looking to expand your knowledge and not necessarily write production code, pick Scheme (using Guile) and Common Lisp (using Clisp or SBCL) and you're good to go.

[+] muuh-gnu|13 years ago|reply
Because 1001 different Schemes exist and the code between them is not portable because the Scheme standard is so tiny.

Scheme code is so hopelessly unportable,that you can not even talk about "writing Scheme". You are either writing Gauche, or Chicken, or Racket, and once you write it, your code stays in that tiny little ecosystem with not more than 10 different users each.

[+] tbirdz|13 years ago|reply
Check out this article here comparing Common Lisp and Scheme. I'm not the author, but I thought it was a really helpful overview of the differences between them, and I hope it will help you all too.

http://symbo1ics.com/blog/?p=729

[+] joshAg|13 years ago|reply
Isn't scheme just a dialect of lisp?
[+] create_account|13 years ago|reply
Dude... the small, light gray text... are you trying to ruin our eyesight?
[+] doktrin|13 years ago|reply
I don't usually complain about typography or design, but this site is an exception to that rule.

It's incredibly unreadable :)

The content looks good, though, but I have to admit I didn't make it through the whole thing.

[+] gilligan|13 years ago|reply
Right, came here to say the exact same thing. My eyes aren't the best. First thing I did was to open chrome dev tools and fiddle in 'p { color: black }' to make it readable at all for me..
[+] SeanDav|13 years ago|reply
I wondered what everyone was talking about here, then realized that since I have noscript installed, I was looking at the site with no javascript - and it was perfectly readable. Once I activated javascript I saw what the fuss was about. So much clearer without javascript.
[+] inetsee|13 years ago|reply
I use the Evernote Clearly extension on web pages like this. It does a great job of improving the readability. It also removes a lot of the non-content stuff around the edges.
[+] virtualwhys|13 years ago|reply
Didn't know what was being discussed here re: readability until I realized, oh, site must have a default white background.

On Linux the xcalib package is an absolute godsend, white backgrounds are like being yelled at to these eyes.

Windoze has a similar screen inversion application, but cannot remember what it is right now.

[+] DanBC|13 years ago|reply
I use an extension called 'change colours' in Chrome. It lets me set different background and text colours, and it allows me to change the link colours, and it allows me to change the font and font size.
[+] LordIllidan|13 years ago|reply
I'm guessing he changed it - looks fine here (text is #111)
[+] hilti|13 years ago|reply
Great start! I wish You a lot of sales. Just an idea: maybe You should present some Lisp web projects you've developed to give Your buyers an idea of what it's like to run Lisp web apps.