<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're ripped straight out of Typed Racket.</div>
<div><br></div><div>It looks like the language includes a basically verbatim copy of TR's dotted type parameters, which it calls "<a href="http://in.relation.to/Bloggers/IntroductionToCeylonPart8#H-RepresentingTheTypeOfAFunction">sequenced type parameters</a>". For example, the supertype of all tuples is written <a href="http://in.relation.to/Bloggers/TuplesOrNot">Tuple<T,P...></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="'courier new', monospace">Int|Bool</font>) which can be deconstructed with <font class="Apple-style-span" face="'courier new', 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="'courier new', monospace">switch (foo)</font></div><div><font class="Apple-style-span" face="'courier new', monospace">case (is Bool) {</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> // this type checks</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> local isTrue = foo || true;</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> ...</font></div><div><font class="Apple-style-span" face="'courier new', monospace">} </font></div><div><font class="Apple-style-span" face="'courier new', monospace">case (is Int) {</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> // so does this!</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> local x = foo + 1;</font></div><div>
<font class="Apple-style-span" face="'courier new', monospace"> ...</font></div><div><font class="Apple-style-span" face="'courier new', 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's ideas.</div>