[plt-scheme] mutual recursion in contracts
Matthias Felleisen wrote:
> That's not a question of lazy ornot, it's a question of providing a
> form for mut rec types.
Sure, laziness would just be one implementation strategy that would
allow for mutual recursion. But that's a good point: I don't care *how*
it's implemented, I just want mutually recursive contracts.
> David A. Herman wrote:
>
> [snip]
> (define-type even ([pred (union odd? #f)]))
> (define-type odd ([pred even?]))
The first contract should be (union odd? false?). Oops. Also, I should
have mentioned that eta-expansion isn't an option, because the contracts
aren't necessarily predicates but possibly higher order contract values.
Maybe the easiest solution would be a library function for converting a
contract to a predicate so that it can be eta-expanded?
Dave