<div>Has anyone taken a look at the upcoming language <a href="http://in.relation.to/Tutorials/IntroductionToCeylon">Ceylon</a>? It feels to me like a pretty aggressively blub-y Java clone, but it has two features that seem like they&#39;re ripped straight out of Typed Racket.</div>
<div><br></div><div>It looks like the language includes a basically verbatim copy of TR&#39;s dotted type parameters, which it calls &quot;<a href="http://in.relation.to/Bloggers/IntroductionToCeylonPart8#H-RepresentingTheTypeOfAFunction">sequenced type parameters</a>&quot;. For example, the supertype of all tuples is written <a href="http://in.relation.to/Bloggers/TuplesOrNot">Tuple&lt;T,P...&gt;</a>.</div>
<div><br></div><div>It also has <a href="http://in.relation.to/Bloggers/IntroductionToCeylonPart5">untagged union types</a> (written like <font class="Apple-style-span" face="&#39;courier new&#39;, monospace">Int|Bool</font>) which can be deconstructed with <font class="Apple-style-span" face="&#39;courier new&#39;, monospace">switch-case</font> statements, sort of like a watered down version of occurence typing:</div>
<div><br></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">switch (foo)</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">case (is Bool) {</font></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    // this type checks</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    local isTrue = foo || true;</font></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    ...</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">} </font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">case (is Int) {</font></div>
<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    // so does this!</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    local x = foo + 1;</font></div><div>
<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    ...</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></div><div><br></div><div>Anyhow, I just thought it was interesting that a language positioning itself as the successor to Java has as its main point of difference two features that are almost identical to those in Typed Racket - type-safe untagged unions and non-uniform variable-arity polymorphism. Even though the actual language is pretty unappealing to me (and I suspect it might be to most people who frequent this mailing list) I thought this was a neat confirmation of the broad appeal of TR&#39;s ideas.</div>