<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 28, 2016, at 3:34 PM, Matthew Johnson via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" class="" 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;"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><blockquote type="cite" class=""><div class=""><div class="">Finally, I am very concerned that there are protocols such as Collection,<br class="">with many inferrable associated types, and that conforming to these<br class="">protocols could become *much* uglier.</div></div></blockquote></div></div></div></blockquote></div></blockquote></div><br class=""><div class="">Unfortunately I have a specific use case in which this argument would be very strong.</div><div class=""><br class=""></div><div class="">Basically this:</div><div class=""><br class=""></div><div class=""><div class="">extension TodoController : ResourceController {}</div><div class=""><br class=""></div><div class="">Would have to become this:</div><div class=""><br class=""></div><div class="">extension TodoController : ResourceController {</div><div class="">&nbsp; &nbsp; public typealias CreateInput = Todo</div><div class="">&nbsp; &nbsp; public typealias UpdateInput = Todo</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; public typealias ListOutput = Todo</div><div class="">&nbsp; &nbsp; public typealias CreateOutput = Todo</div><div class="">&nbsp; &nbsp; public typealias DetailOutput = Todo</div><div class="">&nbsp; &nbsp; public typealias UpdateOutput = Todo</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; public typealias DetailID = String</div><div class="">&nbsp; &nbsp; public typealias UpdateID = String</div><div class="">&nbsp; &nbsp; public typealias DestroyID = String</div><div class="">}</div></div><div class=""><br class=""></div><div class="">I could reduce the amount of associated types but this would reduce the flexibility of the protocol by a huge factor and would make it much less powerful. I’m very torn about this because I do want generics to get better. Specifically I’m looking forward to conditional conformances. But this would be a too high cost imho. I know this is just one example. But maybe there are more examples like this out there. I have to admit this one really got to me. :(</div></body></html>