<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 06 Dec 2017, at 20:54, Joe DeCapo via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 6, 2017, at 12:39 PM, Thorsten Seitz via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: SourceCodePro-Regular; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">IUO is Swift’s equivalent to a null pointer and those are a _hole_ in the type system (this applies to all type systems having an equivalent to the null pointer). That is why such types are marked with "!“ in Swift.</span><br style="font-family: SourceCodePro-Regular; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: SourceCodePro-Regular; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">This does not mean that Swift has no type system but that it’s type system has carefully marked holes.</span></div></blockquote></div><br class=""><div class="">But the types are only marked with "!" at the declaration site, just as types conforming to DynamicMemberLookup and DynamicCallable would be marked at the declaration site. There's no more indication at the call site that something is an IUO than there would be for something conforming to these protocols. They both require inspecting the type itself.</div></div></div></blockquote><br class=""></div><div>But IUO’s are marked with an “!” to differentiate it from a normal type, where as DynamicMemberLookup is just a normal protocol conformance. I would be curious as to what you think of this idea [1]? Would this still be too much of a constraint just to make sure that when people use this they’re explicitly aware of what they’re doing?</div><div><br class=""></div><div><br class=""></div><div>[1]: <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171204/042015.html" class="">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20171204/042015.html</a> </div><br class=""></body></html>