[plt-scheme] Re: to define, or to let
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?