January 18, 2005
Patrick Collison on Croma

Patrick Collison emailed me with some information on Croma, the version of Lisp he created that won him Esat BT Young Scientist of the Year (see yesterday's post).

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!


Posted by jjwiseman at January 18, 2005 12:23 PM

Why is one name space desirable? I fail to see the practical benefit.

Posted by: Paul Dietz on January 18, 2005 02:23 PM

I would like to know where Queinnec wrote about how to get "rid of HTTP transactional/statelessness cruft"!

Posted by: klaus momberger on January 18, 2005 02:34 PM

The sharp-quote and funcall notation always seemed kludgy to me. I think there's two ways of looking at the problem: that macros make a single namespace hard, or vice versa. Making macros easy by introducing a second namespace just seems to just brush the problem under the carpet.

Posted by: Patrick Collison on January 18, 2005 02:37 PM

answering my own question, this seems to be the right link : http://www-spi.lip6.fr/~queinnec/PDF/www.pdf

Posted by: klaus momberger on January 18, 2005 02:38 PM

wow, thanks!

Posted by: klaus momberger on January 18, 2005 02:42 PM

I'll happily brush problems under the carpet if that effectively solves them. The need to occasionally enter a '#' character is a small price to pay for not having to worry about function name/lexical variable name collisions.

As for kludgy... I've always thought all those occurences of 'LST' was a horrible kludge and a sign of fundamental misdesign.

Posted by: Paul Dietz on January 18, 2005 07:22 PM

I tried to post to this thread, but I can't get anchor HREFs past the syntax checker, so if you click on my name you can read the message at my advogato diary, on first class macros, and Paul's
lisp-1/lisp-2 question.

Patrick: pretty cool way of introducing yourself to the LISP world. Welcome!

Posted by: Charles Stewart on January 19, 2005 05:07 AM

hey Congratulations on wining the young scientists Partick.i go to school in Nenagh.I started programming in python.I was hopeing to get in contact with you some time.

Posted by: Kevin Holler on January 22, 2005 05:09 AM

hey patrick, congrats on winning the young scientist - was just wonderin how much time did you spend working on your CROMA project.

Posted by: Adrienne Charles on February 15, 2005 01:44 PM

Yeah well done Patrick, i was there with my php security project (was so crap). Iam from Clonmel myself, i would alos like to know how long it took you and how did you make it so good to impress the judges so much!

Posted by: Colin O'Keeffe on February 24, 2005 10:46 AM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?