[racket-dev] Blame and re-provided bindings

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Mon Jan 17 10:53:46 EST 2011

On Mon, Jan 17, 2011 at 9:49 AM, Robby Findler
<robby at eecs.northwestern.edu> wrote:

>> [...] remove the
>> contracts from 'private' modules to reduce the double hit.

Let me summarize what was important in Casey's message that relates to
this. He has these files:

  redex/gui.rkt
  redex/reduction-semantics.rkt
  redex/main.rkt

The first two export subsets of the Redex library (in order to make it
easy to depend only on parts of the rest of the system). The third one
just re-exports the things from the other two.

To do what you're proposing, he'd have to add three more files: 1 with
the contracts, and two files that are un-contracted versions of the
first two. Then, he'd have to write a bunch of boilerplate code to put
all this together in the right way (or write a macro).

It is this example that makes me think we (the contract system
designers) are doing it wrong.

>> In
>> a sense I was hoping that this would happen if we forced deveoplers
>> to re-state the contract if re-provide means any/c. But I guess this
>> is not going to happen.

FWIW, this smacks of an SML-ish way of thinking about this design decision. :)

Robby


Posted on the dev mailing list.