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