Real Criticisms of Scheme
pschombe.wordpress.com
pschombe.wordpress.com
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.
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?
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.
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.
Of course the fact that there is a difference is the real problem Scheme has.
(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.