<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="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><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;"><blockquote class="clean_bq" style="font-family: 'helvetica Neue', helvetica; font-size: 14px;"><div class=""><a href="http://airmail.calendar/2016-06-09 21:23:00 MESZ">On 9 Jun 2016, at 9:23 PM</a>, Adrian Zubarev 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=""><div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; background-color: rgb(254, 254, 254);"><p class="" style="margin: 15px 0px; -webkit-margin-before: 0px;">So what is the counterpart to <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">AnyClass</code> aka. <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;">AnyObject.Type</code> for <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;">AnyValue</code>? There is no and I don’t see any good name for it.</p></div></div></blockquote><div style="font-family: 'helvetica Neue', helvetica; font-size: 14px;">You could just use AnyValue.Type?</div></blockquote></div><p>So basically you’re for consistency for `AnyValue` but not for current `AnyObject`.</p><p>It’s clear that `AnyValue` can represent more than one value type, where `AnyObject` can only represent one reference type (class). IMO for consistency it should be named as `AnyClass`.</p><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;"><blockquote class="clean_bq" style="font-family: 'helvetica Neue', helvetica; font-size: 14px;"><div class=""><div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; background-color: rgb(254, 254, 254);"><p class="" style="margin: 15px 0px;">More confusion with generalized existentials:</p><ul class="" style="margin: 15px 0px;"><li class="" style="margin: 15px 0px; -webkit-margin-before: 0px;"><code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">Any<class></code> vs. <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;">AnyClass</code> aka <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;">AnyObject.Type</code></li></ul><p class="" style="margin: 15px 0px;"><code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">Any<class></code> makes it crystal clear that you’re using an instance of a class not an instance of <code class="" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(234, 234, 234); margin: 0px 2px; padding: 0px 5px; word-break: normal; word-wrap: normal;">.Type</code>. It should be consistent.</p></div></div></blockquote><div style="font-family: 'helvetica Neue', helvetica; font-size: 14px;">Any<…> would be used for any of a certain type. So Any<class> to me says ‘any of class’, not ‘any class’. Whereas AnyClass says to me literally ‘any class’.</div></blockquote></div><p>`Any<class>` and `AnyClass` should be the same otherwise it will lead to confusion!</p><p>If someone is new to the language and reads `AnyObject.Type` its not clear that a `.Type` instance of a class is meant, because its not clear what `Object` might be. </p><p>If then you also have existentials with any-class requirements and `AnyClass` typealias which is `AnyObject.Type` it would definitely lead to confusion between:</p><p>func foo(value: AnyClass & SomeProtocol) // this would be illegal with current implementation</p><p>vs.</p><p>func foo(value: Any<class> & SomeProtocol)</p><p>If one would want to use a `.Type` instance then should always type out `.Type` suffix after your type name: `AnyClass.Type` == any `.Type` instance of any class</p></div></div> I'm strongly against keeping `AnyClass` as an alias for `AnyObject.Type`, I’d consider to keep only `AnyObject` but if `Any<>` existentials were to come we’d get this mismatch:<div><br></div><div>typealias AnyObject = Any<class></div><div><br> <div id="bloop_sign_1465472272664859904" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div></div></body></html>