On Fri, Jan 14, 2011 at 3:28 PM, Stevie Strickland <sstri...@ccs.neu.edu> wrote:
> On Jan 14, 2011, at 4:22 PM, Robby Findler wrote:
>> No, actually in this case the user message is also wrong. If you trace
>> thru the module dag, you'll see it.
>
> Just to check, are you talking about the second series of modules, or the 
> first?  The problem in the first is likely a variation of PR11084, as Ryan 
> said.  In the second, I get:
>
> contract violation: expected <integer?>, given: 3.5
>  contract on f from (file /Users/sstrickl/c.rkt) via (file 
> /Users/sstrickl/a.rkt), blaming (file /Users/sstrickl/b.rkt)
>  contract: (-> integer? integer?)
>        at: /Users/sstrickl/c.rkt:4.1
>
> and if I'm breaking that text down correctly, that's:
>
> positive: c
> user: a
> negative: b
>
> Which seems right to me, according to what I said.  That is, b entered into a 
> contract with c about value f.  b reprovided f (with no contract) to a, who 
> actually used the value via the expression `(f 3.5)'.
>
> So a misused the value, but b was responsible for its misuse (since it gave 
> it to a without any additional protection).  This is, of course, going by the 
> interpretation of uncontracted reprovides being equivalent to reproviding 
> with the contract any/c.
>

FWIW, I had no idea what the message's "via" clause meant.

I recognize that "blaming x" has a particular technical meaning, but
the emphasis in the phrasing seems backwards -- the "via" module
sounds like an innocent bystander to the "blaming" module's mistake,
but it's precisely the other way around.

Regardless, though, I still think we need some way to re-export a
contracted value that makes the re-importer the negative party on the
contract.
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to