[racket-dev] Blame and re-provided bindings

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Mon Jan 17 09:21:01 EST 2011

On Jan 17, 2011, at 9:00 AM, Robby Findler wrote:

>>> The redex module does an all-from-out provide on what it gets from
>>> redex/reduction-semantics and redex/pict, making it the negative party
>>> on the contracts. When a redex client breaks one of the contracts,
>>> redex gets blamed instead of the client.
>> This sounds like a plain bug.
> Matthias: I believe that this is the behavior you were arguing for upthread.

Thanks for putting it so plain. Casey writes:

 (1) the client of redex breaks one of the contracts. 
 (2) redex gets blamed 

These two sentences next to each other made no sense to me, whatsoever. Now I understand what they mean: 

 (1) the client breaks the contract of 'private' module A 
 (2) and the redex 'super' module M gets blamed because it re-exports all of A's functionality with any/c 

I understand, and yes, this is my preference. But as I have said before, I can see a case for convenience -- as long as Carl's constraints are satisfied too. 

-- Matthias

Posted on the dev mailing list.