[racket-dev] "Disjoint" unions (from PR 13131)

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Sat Sep 22 10:59:54 EDT 2012

On Sep 22, 2012, at 10:52 AM, Eli Barzilay wrote:

> A few minutes ago, Matthias Felleisen wrote:
>> I consider this problem distinct from Vincent's. 
> Yes, the problem is separate (hence moving the discussion) -- it's the
> feature that he mentioned (being able to hide types) that I was
> referring to.
>> I'd argue that the separate this/that constructors exist in your
>> mind only.
> I'm not following that...  If you're saying that the two constructors
> are not separate, then I'm more than agreeing -- I'm saying that this
> is the main feature of the whole thing: the fact that you cannot treat
> them as separate constructors as far as the type system goes.

Correct. In ML/standard type terminology, This and That types (I meant types) are VARIANTS not types. It is only in TR's set-oriented type system, that they can play the role of types too. 

If you wanted to use define-type in plain TR programs (not '311'), you'd want to expose THIS and THAT. 

Posted on the dev mailing list.