We could make the blame information available. Would that help?

Robby

On Thu, Jul 22, 2010 at 11:33 AM, Stevie Strickland
<sstri...@ccs.neu.edu> wrote:
> Yeah, I do know that.  We only hang the contracts on things that are wrapped. 
>  This means that you'll also see the same behavior on contracts that involve 
> immutable data structures.  For example, for the module:
>
> #lang racket
> (provide/contract [fun-list (listof (-> any/c any/c))])
> (define fun-list (list zero? add1 sub1))
>
> If you just try running (value-contract fun-list), you'll get #f, but if you 
> walk the list, you'll notice that each element does have a contract.  So if 
> you want to really reconstruct all the contracts this way, you might need to 
> do some smarter things with immutable data structures.  Howevr, even if you 
> do that, I think you'll end up with either false positives or false 
> negatives.  For the former, someone might have just stored a contracted value 
> in the list along with other, non-contracted values.  For the latter, if you 
> have contracts that work on both immutable and mutable values (as some work 
> I'm doing on the side does for things like hash tables), then you'll see the 
> contracts on the mutable values, but not on the immutable ones.
>
> Stevie
>
> On Jul 21, 2010, at 11:10 PM, Jon Rafkind wrote:
>> Ah ok, thats what I thought he meant. I tried `value-contract' but I 
>> stupidly made this too-simple test-case
>>
>> #lang racket
>> (provide/contract (foo number?))
>> (define foo 2)
>>
>> And when I called (value-contract foo) I got #f, but when I changed the 
>> contract to something that persists passed the boundaries of the module 
>> (like a function)
>>
>> #lang racket
>> (provide/contract (foo (-> any/c any/c)))
>> (define (foo x) x)
>>
>> > (contract-name (value-contract foo))
>> '(-> any/c any/c)
>>
>> Of course you knew all that, just thought I'd be pedagogic!
>
>
>
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to