Tuesday, November 10, 2009

How (un)usable is Scheme?

I am very skeptical of all those new lisp dialects. IMNHO Creating new dialects is more or less like a phase in every lisper's lifetime.

What every lisper ought to do before he dies:
"Plant a tree, write a book, create his own dialect of lisp"

But after I've seen Programming Clojure in the reading list of many fellow lispers I've decided to give it a try. So I went to Clojure download site where I was greeted with an implementation instructions that required me to jump through hoops to make it work and it was an instant turn off. Lack of it-just-works implementation means that this language is still pioneer only and pioneers are the ones with the arrows in the back. So until its ready I'm not touching it.
So what was my choice for my doses of lisping? As I'm growing tired of common lisp funcall which regularly makes my functional code look disgusting I've decided to give a Scheme a try. You've heard about Scheme, don't you? Its a language made by ivory tower academics for the ivory tower academics. Balkanized across various incompatible implementations with incompatible extensions. Seriously is there a language that has more implementations then Scheme? I doubt so. But some brave souls of the Scheme Steering Committee finally showed some mercy for the poor application programmers and voted the R6RS standard that looks usable, well at least on paper.
So I've downloaded PLT Scheme and started working through The Scheme Programming Language. So far things are going well. Luckily PLT has an ability to create executables so I am going to scratch my itch and make a simple expense tracking application for my needs. Let's see how usable Scheme is in the real life.

The problems with Clojure implementations are solved thanks to the nice folks from Enclojure group Netbeans 6.7.1 doesn't load project . After skimming Stuart Halloway Programming Clojure I feel that Rich Hickey approach is visionary and buying Stuart books was a smart choice. I don't believe that common lisp will be replaced by Clojure but rather it will expand the lisp genome to new generation of programmers. Now I would love to buy another two Clojure books Clojure in Action and The Joy of Clojure if Manning is kind enough to list my country in their payment page. So if you love s-expressions and need the benefit of the Java ecosystem give Clojure a chance.


  1. Let us know when you find out!

  2. I've been in projects building substantial commercial software products (both websites and otherwise) in Scheme. It's quite usable in real life. Good luck, and have fun :)

  3. That's great I love to hear lisp success stories. I've found that PLT offers pretty much everything what I need. Too bad Marc Feeley didn't join the R6RS effort.Anyway I'm short on time and energy now will have to postpone playing with Scheme after we ship this May.

  4. I'm puzzled by what you said about having to "jump through hoops" just to install Clojure. Admittedly my grandfather might have trouble following these instructions, but only programmers are going to be downloading a Clojure development environment. For a developer, it doesn't seem hard to me.

    You have to have Java on your system. Google "clojure". Click on "Getting Started". The first thing it says is "Clojure is hosted on Google Code", which is underlined so that you know it's a hyperlink. (It ought to say "Click here to get Clojure", I suppose.) Anyway, you click on it, and see "Featured downloads: clojure-1.1.0.zip". Click on that, click on the obvious "clojure-1.1.0.zip", and it downloads the zip file. Unzip it, and you get a directory. Go to that directory and do "java -cp clojure.jar clojure.main". There you are.

    Perhaps you meant something else?

    What I feel about Clojure is that it has the right basic elements to be the successor to Common Lisp. Whether it will succeed in being the successor is still to be seen. I should really write a blog entry about this!

  5. @Dan
    When I wrote this post Clojure offered just a simple REPL that depended on JVM, something that I don't install unless I really must to. Checking all the plug-ins at that time that were suggested in Clojure.org proved an exercise in frustration, since none of them worked on a clean system.
    Now the situation changed and clojure is slowly leaving the land of pioneers. I wrote a new post called judging a language by its implementation that you could find here http://slobodanblazeski.blogspot.com/2010/05/judging-language-by-its-implementation.html


Note: Only a member of this blog may post a comment.