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

From: Bill Richter (richter at math.northwestern.edu)
Date: Wed Apr 21 00:04:51 EDT 2004

   Bradd W. Szonye <bradd+plt at szonye.com> wrote on Wed, 7 Apr 2004:

   I only wish that more people saw the wisdom in having separate,
   explicit constructs for ordered evaluation, unordered (but
   non-concurrent) evaluation, and potentially-concurrent evaluation.

Brad & Anton, I think I figured it out: you're good C++ programmers,
and willing to live with something MF won't: unenforceable contracts.
Seems I've read MF complaining about C++ stuff that sounds good, but
the compiler doesn't enforce it.  Classes maybe.  You declare things
to be "private", but you can "peek" if you want.  Am I warm?  Dunno
why MF feels so strongly there, but an algorithm guy would, maybe.
Maybe you can't reason about stuff that's on the "honor system".

And a Scheme interpreter can't enforce this distinction between these
3 kinds of evaluation, right?  Folks posted you can't statically check
whether order of evaluation matters, so I'll believe it.  Maybe
unordered-let and unordered-evaluation would be good design, that
programmers would use when they thought order didn't matter.  Good
code annotation, as Anton says.  But I think MF would insist that
Mzscheme does *not* have these unordered constructions until Mzscheme
is smart enough to enforce it.  And statically, that's never, right?

But Robbie's contracts.ss is enforceable, right?  If you declare a
Robbie contract, and then break it, won't DrScheme flag that?

Posted on the users mailing list.