plt/racket — pull request #361 by takikawa (2013-06-05 20:25:39+00:00)
Title: Add support for implicit recursive types & mutually recursive types

This pull request adds support for implicitly declared recursive types and mutually recursive types. That is, you can declare a pair of recursive types like:

(define-type (Even A) (U Null (Pairof A (Odd A))))
(define-type (Odd A) (Pairof A (Even A)))

Note that no `Rec` is needed.

I'm submitting this as a pull request to get some code review before the initial push. I'd appreciate any comments.