On Oct 24, 2010, at 10:10 PM, Robby Findler wrote:
> What would happen if I had a contract like this:
> 
>  (case-> (-> integer? integer?) (-> boolean? boolean?))

One of two things:

a) You'd get an error for having overlapping arities in your contracts. This is 
the most likely to be implemented, at least at first, since I believe that's 
what current case-> does, right?  I'd do a quick spot check, but I'm rebuilding 
Racket at the moment.

b) You'd filter the contracts by arity, and then at the overlaps, you'd have to 
resort to first-order checks on the arguments to decide which argument/result 
contracts to apply.  With the above contract, that would disambiguate, but 
obviously there could be overlaps even after first-order checks (structs with 
prop:procedure, for example).

Stevie
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to