I get it that the point here is about the intention. If you mean to call that initialiser, using an extra name or none should make no difference. If there is a chance people are misusing the nameless initialiser, I don&#39;t see a reason why not adding a name here.<br><br>On Wednesday, 25 May 2016, Karl Wagner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What is so bad about the global function idea?<br>
<br>
reflect(_:Any)-&gt;String<br>
<br>
It’s invoking the reflection APIs, doing a bunch of things you could do yourself with Mirror, and returning a String.<br>
<br>
I know we don’t have many global functions, but this seems like a reasonable place for one.<br>
<br>
This isn’t Objective-C; we have namespaces. You can still create another function with that same signature, and refer to the global one with Swift.reflect().<br>
<br>
Karl<br>
<br>
&gt; On 22 May 2016, at 20:19, Dave Abrahams via swift-evolution &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; on Fri May 20 2016, Kevin Ballard &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; On Fri, May 20, 2016, at 05:14 PM, Dave Abrahams via swift-evolution wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; on Fri May 20 2016, Kevin Ballard &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Tue, May 17, 2016, at 08:32 PM, Chris Lattner via swift-evolution wrote:<br>
&gt;&gt;&gt;&gt;&gt;   * What is your evaluation of the proposal?<br>
&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;m a little nervous about this change, because converting things to<br>
&gt;&gt;&gt;&gt; strings is a fairly basic operation and it should be immediately<br>
&gt;&gt;&gt;&gt; obvious how to do that. That said, the described issues are pretty<br>
&gt;&gt;&gt;&gt; bad, and I know I&#39;ve had to carefully triple-check sometimes to make<br>
&gt;&gt;&gt;&gt; sure I was calling the right initializer. So I&#39;m +1 on the idea.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; That said, I don&#39;t like the name String(printing:). As others have<br>
&gt;&gt;&gt;&gt; pointed out, it sounds like this is related to print(), but this<br>
&gt;&gt;&gt;&gt; initializer does not actually print anything, it just converts any<br>
&gt;&gt;&gt;&gt; value into a string. I also don&#39;t like String(describing:) because<br>
&gt;&gt;&gt;&gt; it&#39;s too long. This initializer should be easier to call than<br>
&gt;&gt;&gt;&gt; String(reflecting:). Also, in my experience this initializer is<br>
&gt;&gt;&gt;&gt; particularly useful with code of the form `someOpt.map(String.init)`,<br>
&gt;&gt;&gt;&gt; and saying `someOpt.map(String.init(describing:))` is annoyingly long.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Given this, I&#39;d like to suggest the simpler `String(from:)`. It&#39;s<br>
&gt;&gt;&gt;&gt; short and generic, and it makes sense as it creates a String from any<br>
&gt;&gt;&gt;&gt; value.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Not too bad.  I could live with it.<br>
&gt;&gt;<br>
&gt;&gt; 😀<br>
&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;m also not a fan of Dave&#39;s suggestion of removing this initializer<br>
&gt;&gt;&gt;&gt; entirely in favor of &quot;\(foo)&quot;.  This feels weird, and it also can&#39;t be<br>
&gt;&gt;&gt;&gt; turned into a first-class function value.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;  { &quot;\($0)&quot; }<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ?<br>
&gt;&gt;<br>
&gt;&gt; Good point. I think what I intended to express was you cannot refer to<br>
&gt;&gt; this operation by name anymore. Maybe not a big deal, but it feels<br>
&gt;&gt; weird.<br>
&gt;<br>
&gt; Makes sense.<br>
&gt;<br>
&gt; --<br>
&gt; -Dave<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;swift-evolution@swift.org&#39;)">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote><br><br>-- <br><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><img src="https://docs.google.com/uc?export=download&amp;id=0BynK4d4SfQPuNnFzckZaLWxYejA&amp;revid=0BynK4d4SfQPuWmcwZENNT0UyVWE2bEJETm9HZ05zMGdadHRzPQ"><br></div></div></div></div></div><br>