Croma's partly an attempt to correct everything I see wrong with CL/Scheme (1 namespace and continuations like Scheme, but all sorts of everday useful stuff snarfed from CL like proper lambda-list keywords and so on). It also sticks in various experimental things: 1st class macros (bad idea, I've since decided). I spent a while re-thinking assignment, and Croma uses a strange new idea of “overloading” the values of data objects: you can add in an additional function value (sort of like CL) that'll be used instead of its value in the _function_ position if it exists, to make possible assignment that's generalised and extendable but also idiomatic.
All of this is geared towards an integrated continuation-based web development system. Using a fairly elaborate standard library, you can do stuff like (link "Click here" (fn (hdrs) (str 'you 'clicked "me")) in the middle of HTML pages. And, of course, it gets rid of HTTP transactional/statelessness cruft, as has been documented by Graham and Queinnec.
Croma's not quite in a world-useable state, but it's getting there. I'll GPL it as soon as I think others might find it useful, anyway.
I asked Patrick how he became involved in Lisp.
I became interested in Lisp-like languages mostly from hearing Python programmers look for x in the language, “because Lisp has it”. So about two years ago, I armed myself with ANSI Common Lisp, and dived in. Since then, PAIP, The Little Schemer, The Seasoned Schemer, Lisp in Small Pieces, SICP, On Lisp (dead-tree version!), EOPL, CLtL, etc. And I haven't looked back; it's over a year since I coded a program more than 100 lines in something other than CL/Scheme. As has been put in more eloquent ways on the RtL highlight reel, all other languages just look fundamentally wrong and unwieldy by comparison. More importantly, from c.l.l and p.l.o traffic, it seems that we're growing in number!
Awesome.Posted by jjwiseman at January 18, 2005 12:23 PM