<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">Am 12.12.2015 um 19:01 schrieb Joe Groff via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>>:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">(T | T | U | V) and (U | T | V) would be distinct types</span></div></blockquote></div><br class=""><div class="">That would be unexpected. I’d expect them to be the same type.</div><div class=""><br class=""></div><div class="">In Ceylon I can do the following without problems:</div><div class=""><pre style="background-color: rgb(255, 255, 255); font-family: Menlo;" class=""><span style="color:#990066;" class="">String</span>|<span style="color:#990066;" class="">String</span>|<span style="color:#990066;" class="">Integer </span>foo = <span style="color:#0000ff;" class="">1</span>;<br class=""><span style="color:#990066;" class="">Integer</span>|<span style="color:#990066;" class="">String </span>bar = foo;</pre><div class="">or</div></div><div class=""><pre style="background-color: rgb(255, 255, 255); font-family: Menlo;" class=""><span style="color:#000080;font-weight:bold;" class="">interface </span><span style="color:#990066;" class="">Parent </span>{}<br class=""><span style="color:#000080;font-weight:bold;" class="">interface </span><span style="color:#990066;" class="">ChildA </span><span style="color:#000080;font-weight:bold;" class="">satisfies </span><span style="color:#990066;" class="">Parent </span>{}<br class=""><span style="color:#000080;font-weight:bold;" class="">interface </span><span style="color:#990066;" class="">ChildB </span><span style="color:#000080;font-weight:bold;" class="">satisfies </span><span style="color:#990066;" class="">Parent </span>{}<br class=""><pre style="font-family: Menlo;" class=""><pre style="font-family: Menlo;" class=""><span style="color:#990066;" class="">ChildA </span>a = childA();<br class=""><span style="color:#990066;" class="">ChildB </span>b = childB();<br class=""><span style="color:#990066;" class="">Parent </span>p1 = a;<br class=""><span style="color:#990066;" class="">ChildA|Parent </span>p2 = b;<br class=""><span style="color:#990066;" class="">Parent </span>p3 = <span style="color:#000080;font-weight:bold;" class="">if </span>(x) <span style="color:#000080;font-weight:bold;" class="">then </span>a <span style="color:#000080;font-weight:bold;" class="">else </span>b;</pre><div class=""><div style="font-family: Helvetica; white-space: normal;" class="">Everything fits nicely as expected.</div><div style="font-family: Helvetica; white-space: normal;" class=""><br class=""></div><div style="font-family: Helvetica; white-space: normal;" class="">-Thorsten</div><div style="font-family: Helvetica; white-space: normal;" class=""></div></div></pre><div class=""><br class=""></div></pre><div class=""><br class=""></div></div></body></html>