Wednesday, February 21, 2007

Ever since I read the Acknowledgments section of the scsh manual, I have gotten a chuckle out of Olin Shivers. I particularly liked the 9mm Sig-Sauer comment. That started a phase where I read through just about everything I could find written by Olin. His Scheme-related complier articles are definitely interesting reading.

I agree with you that his solution to a usable loop facility in Scheme is very clever and I enjoyed his talk. However, I'm also left wondering at just what all that cleverness has achieved. It yields another DSL within Scheme -- making Scheme look as complex as Common Lisp -- and the result seems wordy. All this for the case where you want a complex loop body that you can't easily express with a map or simple tail recursion, while still giving you the optimization available with tail recursion. Is the result really more legible than just writing your complex loop body and doing the explict parameter passing? I could be convinced, but at the moment I'm not so sure.

I'm more of a Common Lisper, not a Schemer, and I'm (finally) pretty comfortable with LOOP, so I didn't find the result problematic. I could see how if you find tail recursion elegant that you'd be dissatisfied with the result. One could argue that any enhancements to Scheme will increase its complexity. Indeed, there are some in the Common Lisp world that don't like LOOP because they don't think it's Lispy enough. Paul Graham comes to mind.

That said, my comments on Olin's talk were really directed at the man himself, and not the talk's specific content. I just find Olin a smart, funny character. I had read things from him before, but never seen him on a video, so this was a treat. It's nice to know he's as funny on video as he is in the written medium.