A possible approach to learning Common Lisp
deepaksurti.com
deepaksurti.com
Lisps have got to be the easiest family of languages to get started with. Learn the syntax of a function call, and you'll understand most of the code you're seeing. Understanding it in depth is a bigger undertaking, of course.
Emacs shouldn't be too much of a problem with version 23 and some sane Windows-oriented keybindings and CUA mode enabled. Perhaps someone (maybe me when I've got the time) should just put a good Emacs configuration online for people wanting to play with CCL, Emacs & Slime.
Then again, Lispbox might be good enough as well. I've never checked it out.
Honestly, I feel like the bigger hurdle is emacs, which isn't necessary, but almost every article about lisp makes it sound like it is.
It's a really great, free resource for beginners that will help you get ready for the other books.
Scheme is a conceptual superset of Common Lisp (cf. continuations), although CL has more built-in practical functionality (CL is typically faster (exceptions include Stalin, Bigloo), and has possibly better-implemented libraries).
One might learn both concurrently!
Can you please elaborate? I haven't played with Scheme yet, but http://docs.plt-scheme.org looks more impressive than anything I've seen for CL so far: lots of stuff in one place and guaranteed to work.
Thanks!
There is a very nice chunk of CL that is good at what it does, is fast as hell, and nice to code in. But there is so much cruft attached!
"" Here it helps that a Lisp-2 seperates variables and functions by default. Variables are usually not important parts of an application's ontology. If they are, the convention in Common Lisp is to use proper naming schemes, like asterisks for special variables. Effectively, this creates a new namespace."
Mmm, asterisks. This, to me, is why the whole Lisp-1/2 debate is moot. The solution is simply Lisp-N, where you can define namespaces, modules, etc. and control how they're used. See PLT Scheme etc."
But still in Scheme the aesthetic is to put values of different types in the same namespace -- unless the values don't actually exist at runtime, which is the case with syntactic R6RS records, for example. But you'll still see a conflict at compile time if you attempt to use a name as a record type, then reference it as a free variable -- iirc, anyway.
Go with Clojure if you:
Want / need to interop with Java
Want to use Clojure's cool STM
Want to be specifically functional
Be one of the cool kids.
Go with SBCL / Common Lisp if you: Want to use cool stuff like Cells & Hunchentoot
Want to make your way through PAIP, PCL, On Lisp
(In other words, lots of documentation for CL!)
Want a multi-paradigm language (CLOS is awesome)
Be one of the cool kids.[edit] Just noticed it's been posted to reddit, too. Surely it didn't stand a chance!
downloads are at http://www.newlisp.org/index.cgi?page=Downloads
Lots of distributions.
P.S. I have no affiliation with the newLisp folks.
P.S.S. It GPL licensed.
http://www.alh.net/newlisp/phpbb/viewtopic.php?p=2776
http://groups.google.com/group/comp.lang.scheme/browse_frm/t...