14 comments

[ 2.4 ms ] story [ 55.8 ms ] thread
It is worth noting that this is from 2006.

Also, he missed the main problem with Scheme (and Lisp) IMHO: language fracturing. Want to use Scheme on your project? Not so fast! Which one? PLT Scheme? Chicken? MIT? DrRacket? Gambit? TinyScheme?

...the list goes on: http://en.wikipedia.org/wiki/Category:Scheme_implementations

Most of these are 95% interchangeable in terms of code, but there are a few differences here and there that make it hard (especially for newbies) to get help from Schemers using a different flavor.

FYI DrRacket is an editor and PLT Scheme is now referred to as Racket.
True, my bad. It's been almost two years since I was working in Scheme, and I didn't check closely enough.
>but there are a few differences here and there that make it hard (especially for newbies) to get help from Schemers using a different flavor.

I don't understand the reasoning. Yes there are different variants of Scheme. All you have to do is look and ask for what you need. How does the difference make it harder for newbies to get help? Have you asked any questions in the mailing list for any of these implementations and not received a reply? Have you looked at what these languages even provide? Do you understand the difference between an editor and an implementation? What were the difference that you found confusing in the implementations? What were the criteria for your project?

This comes off sounding needlessly aggressive, but I'll answer anyway.

I was trying to pick up Scheme, and I was using PLT Scheme (now Racket). I would ask on a Scheme list / IRC channel "how do I $FOO?" Someone would say "here's some code." That code would not work under PLT because the person in question was using a different implementation with slightly different syntax or language features. I would then spend some time figuring out the exact differences -- usually not long, but it was extra friction that made it harder to get over the learning hump.

Which Scheme? Most of these criticisms would not be valid for most Schemes.
If you read the article, he says that he means Scheme, as in the language itself (RSR5 presumably? I'm not familiar with if RSR6 lacks these things too)

Of course the fact that there is a difference is the real problem Scheme has.

"Recently I have noticed a tendency in the Common Lisp community to criticize Scheme"

That goes back at least to the mid-90s when I was following comp.lang.lisp. It seemed like Kent Pitman kind of pioneered this field of criticism, though I was never connected enough to be sure.

Why does scheme have syntax for multiple values at all?

  (define (g x y z) ...)
  (call-with-values f g) 
means the same as

  (define (g . xs) ...)
  (apply g (f)),
and it's longer.

If there's room for extra syntax, I think

  (g . (f a b c))
for

  (apply g (f a b c))
would be more useful.
multiple return values can be optimized
If you want this stuff, just stop using an ancient Scheme implementation and pick up Racket.
I haven't used Scheme in a while now, but I remember that in practice every implementation provided CL-style macros. I think the only reason it never became part of the standard, given that it's dead simple to implement compared to hygienic macros, is the whole attitude toward standardizing as little as possible.