<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="margin: 0px;"><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;"><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">'struct&lt;&gt;' does seem redundant unless it becomes subtypeable. If you want a struct which conforms to several protocols, protocol&lt;&gt; already covers this.</span></blockquote></div><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">I think this is not correct. Lets check this example:</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">func foo(value: SomeProtocol) {</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">&nbsp; &nbsp; if let a = value as? struct&lt;StructA, SomeProtocol&gt; { /* do something with a */ }</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">&nbsp; &nbsp; else if let b = value as? struct&lt;StructB, SomeProtocol&gt; { /* do something with b */ }</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">}</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;">In this scenario you’ll be able to access properties and functions from `StructA` or `StructB` which might not be covered by `SomeProtocol`. Everything is merged nicely into one instance. But you are right it depends on the use-case.</p><p style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;"><br></p><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;"><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">Btw, if we'd have separate class&lt;&gt; and struct&lt;&gt; - we'd be able to have</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span><span style="font-family: 'helvetica Neue', helvetica;">method to separate reference type from value type.</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span></blockquote></div><div><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">We can write now : print(c is protocol&lt;&gt;)</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span></blockquote></div><div><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">and we'd can:</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span></blockquote></div><div><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">print(c is class&lt;&gt;)</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span></blockquote></div><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: 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;"><span style="font-family: 'helvetica Neue', helvetica;">print(c is struct&lt;&gt;)</span><span style="font-family: 'helvetica Neue', helvetica;">&nbsp;</span></blockquote></div></div></div></div></div><div id="bloop_customfont" style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial; margin: 0px;"><br></div><font face="helvetica Neue, helvetica">True, I didn’t thought about that effect at the first glance, thank you for the hint. I will add this to the draft proposal tomorrow.</font><br><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: Helvetica, Arial;"><br class="Apple-interchange-newline"></div></div> <br> <div id="bloop_sign_1463159906711746816" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Adrian Zubarev<br>Sent with Airmail</div></div> <br></body></html>