<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Karl,<div class=""><br class=""><div class=""><div><blockquote type="cite" class=""><div class=""><div id="edo-message" style="font-family: Helvetica; font-size: 12px; 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;" class=""><div class="">1. Yes</div><div class="">2. Yes</div><div class="">3. I don't know the actual reason, but Any and AnyObject have special meaning to the compiler and objects implicitly "conform"" to them. Either the implementation doesn't support extending those types, or we explicitly decided that extending these implicit existentials was a bad idea (what could you even write in an extension in Any? You'd almost certainly have to cast it to Something. Extend Something instead.)<br class=""></div></div></div></blockquote><div><br class=""></div>Ok. Yes, I agree it makes sense to disallow that. Thanks for your answer!</div><div><br class=""></div><div>Best regards,</div><div>Toni<br class=""><br class=""><blockquote type="cite" class=""><div class=""><div id="edo-message" style="font-family: Helvetica; font-size: 12px; 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;" class=""><div class="">- Karl<br class=""><div id="edo-signature" style="font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif;" class=""></div><br class=""><div id="edo-link" class=""></div></div></div><div id="edo-original" style="font-family: Helvetica; font-size: 12px; 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;" class=""><div class=""><br class=""><br class=""><blockquote type="cite" style="margin: 1ex 0px 0px; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 0.5ex;" class=""><div class="">On Nov 21, 2016 at 11:09 am, &lt;<a href="mailto:swift-users@swift.org" class="">Toni Suter via swift-users</a>&gt; wrote:<br class=""><br class=""></div><div class="">Hi everyone,<div class=""><br class=""></div><div class="">I am trying to understand existentials in Swift. I understand that in the</div><div class="">following code, P1 &amp; P2 is an existential type, because it supports values</div><div class="">from all types that conform to both P1 and P2.&nbsp;</div><div class=""><br class=""></div><div class="">protocol P1 {}</div><div class="">protocol P2 {}</div><div class="">var x: P1 &amp; P2</div><div class=""><br class=""></div><div class="">However, this raises a few questions for me:</div><div class=""><br class=""></div><div class=""><b class="">1. In the following code, is x also an existential?</b></div><div class="">protocol P {}</div><div class="">var x: P</div><div class=""><br class=""></div><div class="">The proposals / blog posts that I read always talk about the protocol composition syntax,</div><div class="">but to me, this is the same as the first example, just with only a single protocol requirement.</div><div class=""><br class=""></div><div class=""><b class="">2. Are Any and AnyObject also existentials?</b></div><div class="">So far, my understanding is:</div><div class="">Any is an existential with no requirements</div><div class="">AnyObject is an existential with only a class requirement</div><div class=""><b class=""><br class=""></b></div><div class=""><b class="">3. Why can I not extend Any / AnyObject?</b></div><div class="">For example, AnyObject is a protocol defined in the standard library. Why is it not extensible?</div><div class=""><b class=""><br class=""></b></div><div class="">Thanks and best regards,</div><div class="">Toni</div>_______________________________________________ swift-users mailing list<span class="Apple-converted-space">&nbsp;</span><a dir="ltr" href="mailto:swift-users@swift.org" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="1" class="">swift-users@swift.org</a><span class="Apple-converted-space">&nbsp;</span><a dir="ltr" href="https://lists.swift.org/mailman/listinfo/swift-users" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="2" class="">https://lists.swift.org/mailman/listinfo/swift-users</a></div></blockquote></div></div></div></blockquote></div><br class=""></div></div></body></html>