[plt-scheme] upcoming change in PLT Scheme v300

From: Rich Talley (rich.talley at gmail.com)
Date: Fri Apr 1 10:23:25 EST 2005

Then there's the matter of that darn name. You tell people you want to
teach your kids Scheme and they think you're teaching them *to scheme*
- perhaps a name that was more BASIC would be much better......Rich

On Mar 31, 2005 10:10 PM, Shriram Krishnamurthi <shriram at gmail.com> wrote:
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>                 The Fate Of LAMBDA in PLT Scheme v300
>                                   or
>                    Lambda the Ultimate Design Flaw
> About 30 years ago, Scheme had FILTER and MAP courtesy of Lisp hackers
> who missed them from their past experience.  To this collection,
> Scheme added a lexically-scoped, properly-functioning LAMBDA.  But,
> despite of the PR value of anything with Guy Steele's name associated
> with it, we think these features should be cut from PLT Scheme v300.
> We think dropping FILTER and MAP is pretty uncontroversial; (filter P
> S) is almost always written clearer as a DO loop (plus the LAMBDA is
> slower than the loop).  Even more so for (map F S).  In all cases,
> writing the equivalent imperative program is clearly beneficial.
> Why drop LAMBDA?  Most Scheme users are unfamiliar with Alonzo Church
> (indeed, they don't even know that he was related to Guy Steele), so
> the name is confusing; also, there is a widespread misunderstanding
> that LAMBDA can do things that a nested function can't -- we still
> recall Dan Friedman's Aha! after we showed him that there was no
> difference!  (However, he appears to have since lapsed in his ways.)
> Even with a better name, we think having the two choices side-by-side
> just requires programmers to think about their program; not having the
> choice streamlines the thought process, and Scheme is designed from
> the ground up to, as much as possible, keep programmers from thinking
> at all.
> So now FOLD.  This is actually the one we've always hated most,
> because, apart from a few examples involving + or *, almost every time
> we see a FOLD call with a non-trivial function argument, we have to
> grab pen and paper and imagine the *result* of a function flowing back
> in as the *argument* to a function.  Plus, there are *more* arguments
> coming in on the side!  This is all absurdly complicated.  Because
> almost all the examples of FOLD we found in practice could be written
> as a simple loop with an accumulator, this style should be preferred,
> perhaps with us providing a simple helper function to abstract away
> the boilerplate code.  At any rate, FOLD must fold.
> --The PLT Scheme Team

Posted on the users mailing list.