On 2012-04-27 17:44:06 -0400, Matthias Felleisen wrote:
> [[If you mentioned this issue in my office yesterday, I failed to catch it.]]

I remembered/thought it as I was composing the e-mail.

> In the old world, I could write contracts such as
>
>  (and/c (class/cc ...) (class/c ...))
>
> and that was *really convenient*. Are you saying I can
> no longer do so?

You can write that, but the following isn't very useful:
  (and/c (class/c #:opaque [m (->m number? number?)])
         (class/c #:opaque [n (->m number? number?)]))

Since the two class contracts both reject classes that the other would
accept (unless `and/c` somehow merged the first-order checks of the
two rather than checking both separately).

It works if the two contracts mention exactly the same members.

Cheers,
Asumu
_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to