[plt-scheme] Re: to define, or to let

From: Bill Richter (richter at math.northwestern.edu)
Date: Tue Apr 6 23:33:49 EDT 2004

Matthias Felleisen wrote very interesting and explosive stuff on
Sun, 21 Mar 2004, and I'd like to hear a lot about this:

   This is an extra that brings mzscheme close to safety, a property
   that R5RS doesn't seem to care about, yet is critical for a
   unityped ("dynamically typed", "tagged") programming language, that
   should play a role over the next 50 years.

   C++ is bad because its type system is unsound.  (R5RS) Scheme is
   bad because it isn't (as) safe (as ordinary human reasoning can
   make it).  Java and mzscheme show that these flaws don't have to be
   an integral part of languages.

   I'd like to thank Matthew here for showing with mzscheme that
   Scheme is a language that is worthy of some consideration. Without
   his efforts, Scheme wouldn't deserve the attention that it still

How can mzscheme become as safe as ordinary human reasoning can make
it, by possibly departing from the standard, is this all about typing?
I didn't follow the thread, but let me offer a comment anyway:

Here's a pedagogical advantage to mzscheme being RnRS incompatible:

Users could then embrace all DrScheme features, and not worry about
compatibility.  I've been using DrScheme/PrettyBig for 1.5 years on
some computer algebra, and I've found it very helpful.  I just started
coding again after a long time off, so I'd forgotten everything, and
I'm not a good programmer anyway.  Well, I found in my latest coding
experience that I could get DrScheme to do what I wanted, and quickly.
It was under 500 lines of code, but I debugged it fast, and it was
helpful on a Math problem (not quite solved).  I attribute my coding
success to various features in list.ss, like filter, memf, quicksort,
mergesort, remove, and even simple ones, like first, second, & rest.

Well, of course I could port these up myself if I used a different
Scheme, such as Gambit (for speed).  But I'd be a better coder if I
was using DrScheme features I *don't* know how to port, principally
the define-struct features.  And of course there's macros, which I
don't know a think about yet. So it'd be helpful if I knew that
mzscheme was fundamentally incompatible with RnRS.

Posted on the users mailing list.