<div dir="ltr">A `Parser&lt;Output = Void, StringType = String&gt; where StringType : ParsableStringType`<div><br></div><div>`Void` is a fine default (somewhat questionable but follow me) because `Void?` ends up having the same info as a boolean which means that our Parser is, effectively, a recognizer. Thinking about it, `GrammarRecognizer&lt;StringType = String&gt; where StringType : ParsableStringType` sidesteps the issue entirely and gives a second example of when we could fill all type parameters.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 23, 2017 at 4:32 PM, David Waite <span dir="ltr">&lt;<a href="mailto:david@alkaline-solutions.com" target="_blank">david@alkaline-solutions.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">You do have empty angle brackets today, which indicate an inferred generic argument rather than a defaulted generic argument. See:<div><br></div><div><div>  1&gt; let a = 1</div><div>a: Int = 1<br>  2&gt; let b:Optional = a<br>b: Int? = 1<br></div><div><br></div><div>If Swift had defined Optional as Optional&lt;Wrapped = Any&gt;, statement 2 would be ambiguous.</div><div><br></div><div>I have a hard time coming up with a realistic generic which can have every argument defaulted. If someone can’t give a real-world example, I would require empty angle brackets just to differentiate defaulted vs inferred arguments.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-DW</div></font></span><span class=""><div><br></div><div><div><blockquote type="cite"><div>On Jan 23, 2017, at 12:25 PM, T.J. Usiyan via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_-8439709909390761736Apple-interchange-newline"><div><div dir="ltr">I am against requiring empty angle brackets. I could live with it either way, but I think that one reason to provide default types is to hide the detail that there is a type parameter until such a time as it is needed.  Empty angle brackets call attention to the feature in a manner that discards any possible gains on this front. Empty angle brackets would be confusing to explain to someone new to the language and–more importantly–shouldn&#39;t be necessary to explain in the &quot;falling back to defaults&quot; case.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 23, 2017 at 1:41 PM, Trent Nadeau via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">The proposal looks good to me with one possible concern. I&#39;m leaning toward types that use the defaults should still require the angle brackets, X&lt;&gt;. This makes it clear that you&#39;re using a generic type. That leads me to think that the examples Doug gave should be an error as the explicit types on the `let`s should either be omitted completely or fully specified (as X&lt;&gt;, X&lt;Double&gt;, X&lt;Int&gt;, etc.).</div><div class="gmail_extra"><br></div></blockquote></div></div></div></blockquote></div><br></div></span></div></div></blockquote></div><br></div>