

Learning Lisp The Bump Free Way - StylifyYourBlog
http://blog.ppenev.com/2013/04/24/learning-lisp-the-bump-free-way.html

======
brudgers
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
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>

~~~
pavelludiq
You meant Eclipse, obviously. But I'm not sure that is a good platform for a
lisp IDE, cusp probably became abandonware for a reason. Perhaps something
half usable can be done with sublime?

~~~
pnathan
Yes, Eclipse.

You know, Sublime Text integration might be possible. But Eclipse is, as near
as I can tell, the canonical mainstream GUI IDE. I think getting Swank(SLIME)
integrated into a mainstream IDE would add to Common Lisp's usability for the
non-command-line crowd by leaps and bounds.

I see the computing world as fundamentally bimodal: people trend hard towards
GUIs and mice or they trend hard towards CLIs and keyboards. Common Lisp's
development environment is built by and for the second crowd. You might call
them... hackers. :-) But I would dearly love to see the non-hacker computing
world walk in the wonders of Lisp. I've attempted to teach several people
Lisp, and the development environment is, hands down, the major stumbling
point (after the parentheses whining is finished with). This is a major
barrier to getting people onboarded. I suppose that means I should try to get
Cusp/lispdev compiling this weekend and see what state its in. :-)

Other barriers include no modern GUI library[1]; no popular webapp
framework[2], no single point of contact for the language, and a lack of a
flagship thing to raise the flag around (Ruby/Rails, Python/NumPy|Django,
Clojure/not-java, etc).

[1] The libraries that exist are fairly thin bindings over QT, SDL, and TK.
They are far behind the sleek usability of, say, Clojure's seesaw or the even
clunkiness of C# autogenerated code.

[2] Clack and children are getting there

------
tete
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?

~~~
chimeracoder
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.

~~~
tibbon
Is starting with Clojure a poor idea (jumping off the deep end)? I'm mainly a
Ruby dev and looking to expand my knowledge-set

~~~
chimeracoder
Clojure is a nice choice if you're looking to write production code,
especially if you're already using other JVM languages (Java/Scala/JRuby/etc.)

However, Clojure strays from a number of standard common idioms in other
Lisps, which, IMHO, makes Clojure a less-than-ideal candidate if you're
looking to get the "full SICP" experience. It has a lot of other benefits as a
language, but for a learning experience, you'll miss out on some of the idioms
common to other Lisps.

But, give it a shot and see if it works for you. Once you've learned one, it's
really to learn another dialect.

And, in the end, the only wrong answer to 'Which Lisp?' is the empty list[0].
:)

[0] This is an example of a super-nerdy Lisp joke which works in Common Lisp
but _not_ Clojure - in Common Lisp, 'nil', 'false', and the empty list are all
the same value, (and all other values are considered "truthy"). In Clojure,
they are three distinct entities, and there is a discrete "true" value.

~~~
kyllo
The joke "My other car is a cdr" also works in Common Lisp and Scheme but not
Clojure.

~~~
chimeracoder
Wait, this one is news to me. How does Clojure break this? It still supports
car/cdr, if I recall correctly, right?

~~~
Xurinos
The closest Clojure has to car/cdr is first/rest. It supports "cons" but only
for creating sequences. Traditional Lisp car/cdr is one-location/other-
location, and its cons puts together pairs of data. Often this is used for
constructing sequences, but it is also often used for trees.

Clojure:

    
    
        user=> (cons 3 4)
        IllegalArgumentException Don't know how to create ISeq from: java.lang.Long  clojure.lang.RT.seqFrom (RT.java:494)
    
        user=> (cons 3 '(4))
        (3 4)
    
    

Common Lisp:

    
    
        CL-USER(1): (cons 3 4)
    
        (3 . 4)
        CL-USER(2): (cons 3 '(4))
    
        (3 4)
        CL-USER(3):

~~~
kyllo
Yeah those error messages completely baffled me for the first few hours I
spent in the Clojure REPL. It was strange enough to not have car/cdr and cons
for working with tuples, but then I wrote a simple recursive algorithm and got
a java.lang.StackOverflowError. I now understand why and the alternative
idioms that Clojure provides, but at the time it was a WTF moment.

------
create_account
Dude... the small, light gray text... are you trying to ruin our eyesight?

~~~
gilligan
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..

------
hilti
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.

