Steel Bank Common Lisp Version 1.0.38 released
sourceforge.net
sourceforge.net
Or http://sbcl.sourceforge.net/news.html if you were highlighting the latest release.
Basically, I want to learn lisp, but also write some apps in it. I keep hearing that people use lisp for prototyping and then rewrite in some other language.
I suggest skimming through a few pages of Planet Clojure and Planet Lisp, to get a sense of the apps people are writing. As a rough rule of thumb, if one excites you much more, that could be the better choice.
If you end up going with CL, you'll likely have a better time asking newbie questions on LispForum (or mailing lists like the LispWorks one), rather than on Usenet. And there are alternatives to SBCL and CMUCL, such as ECL and LispWorks: http://common-lisp.net/~dlw/LispSurvey.html
As for prototyping-then-rewriting, I think there are a few situations:
1) nontechnical reasons (such as, the maintainers can't be expected to maintain a Lisp app)
2) because the Lisp implementation is missing some convenient functionality, and it isn't easy to call an existing one in another language
3) the Lisp doesn't interoperate well with a given technical ecosystem
I think the probability of rewriting is less with Clojure, due to its Java interop, long-term goals of interop with other platforms (like .NET), and the increasing number of teams using it.
I am not interested in webapps. I usually do command line stuff, or libraries, and i've done some libraries in ncurses. Basically a terminal freak. Currently ruby, but 5-6 years of Java before that. No functional language exp.
Are there not several versions of Scheme, too. Any suggestions for what to start with.
Is scheme/lisp/clojure the correct language to use for terminal/command-line apps or ncurses stuff ?
Does anyone offhand know if there is ncurses support for these languages ?
Common Lisp, at least, isn't really a purely functional language. It supports multiple paradigms. Scheme and Clojure are a little more "functional" than CL, but they too are not pure. I wouldn't worry about this yet.
>Are there not several versions of Scheme, too. Any suggestions for what to start with.
I replied above. (-:
>Is scheme/lisp/clojure the correct language to use for terminal/command-line apps or ncurses stuff ?
I don't see why not.
>Does anyone offhand know if there is ncurses support for these languages ?
It looks like there is a package for Common Lisp for doing ncurses stuff. There's a thread on the PLT mailing list that indicates there's no support for ncurses in PLT Scheme, but other implementations might have it. A search in Clojure's libraries didn't reveal anything, but I may be looking in the wrong place (it seems like they would have one).
Googling for "ncurses java" provided better results than "ncurses clojure". It is useful to exploit Java's libraries, only wrapping them in Clojure when there is something to be gained. (Like writing a macro mini-language to automate away tedious parts of a library you use.)
I find that when using a new program (in this case, a programming language), it helps to quickly test that it basically supports the features I'll want. So if I had your requirements, I might check early on whether I liked one of the ncurses libraries.
If you have no exposure to lisp or functional programming i would suggest scheme as a first lisp, after you feel comfortable with lisp syntax and functional programming you should learn both common lisp and clojure, in whatever order you like. At least thats what i did, seems to have worked out well for me. Learning either of those as a first lisp is possible though, you can just ignore my advice and start with whatever you like.
lockfree_enqueue(queue, whatnot);
whatnot = lockfree_dequeue(queue);
Looks just like all the rest of my C code. The part of me that wants to learn lisp dies a little every time I read one of these "look how awesome lisp is" comments because I'm afraid I'll end up spouting such nonsense.I wouldn't worry much about spouting nonsense when you learn new things unless you're prone to that already.