<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">Tino,</p>
<p style="margin:0px 0px 1.2em!important">In what way is this “hiding” protocol conformance? In the examples, <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">MyClass</code> is declaring conformance to <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">A</code> and <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">B</code> via the <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Useful</code> protocol composition. Perhaps I should have made it clearer which bits are new/proposed: Only the <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">implements</code> word is new here, the protocol composition syntax (<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">A &amp; B</code>) already exists.</p>
<p style="margin:0px 0px 1.2em!important">You’re probably right that this is an additive (4.1) thing. But personally I see no harm in building up a backlog of useful proposals to be reviewed next year. The knowledge of what’s to come may also help influence thinking on what’s to come next. Should such discussions be flagged as additive in the subject somehow? I think I asked this before but forgot or missed if there was a response.<br>On Fri, 25 Nov 2016 at 16:21 Tino Heth &lt;<a href="mailto:2th@gmx.de" class="gmail_msg" target="_blank">2th@gmx.de</a>&gt; wrote:</p>
<p style="margin:0px 0px 1.2em!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Kotlin has a imho really nice solution for this: Because constructor parameters appear right after the class declaration, you can refer to them in the inheritance-clause.<br class="gmail_msg">
<br class="gmail_msg">
Protocol conformance is a quite important aspect of a type, so I&#39;m not sure if it wise to allow &quot;hiding&quot; it — and I hope the promised macro-system will allow forwarding, so that there is no special syntax needed.<br class="gmail_msg">
<br class="gmail_msg">
Bottom line:<br class="gmail_msg">
Imho it&#39;s not the right time for serious discussion (serious means: with the goal of a accepted proposal ;-)</blockquote><p></p></div><p style="margin:0px 0px 1.2em!important"></p>
<div title="MDH:PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX21zZyI+PGRpdiBjbGFzcz0iZ21haWxfbXNnIj48
ZGl2IGNsYXNzPSJnbWFpbF9tc2ciPlRpbm8sPGJyIGNsYXNzPSJnbWFpbF9tc2ciPjxiciBjbGFz
cz0iZ21haWxfbXNnIj48L2Rpdj5JbiB3aGF0IHdheSBpcyB0aGlzICJoaWRpbmciIHByb3RvY29s
IGNvbmZvcm1hbmNlPyBJbiB0aGUgZXhhbXBsZXMsIGBNeUNsYXNzYCBpcyBkZWNsYXJpbmcgY29u
Zm9ybWFuY2UgdG8gYEFgIGFuZCBgQmAgdmlhIHRoZSBgVXNlZnVsYCBwcm90b2NvbCBjb21wb3Np
dGlvbi4gUGVyaGFwcyBJIHNob3VsZCBoYXZlIG1hZGUgaXQgY2xlYXJlciB3aGljaCBiaXRzIGFy
ZSBuZXcvcHJvcG9zZWQ6IE9ubHkgdGhlIGBpbXBsZW1lbnRzYCB3b3JkIGlzIG5ldyBoZXJlLCB0
aGUgcHJvdG9jb2wgY29tcG9zaXRpb24gc3ludGF4IChgQSAmYW1wOyBCYCkgYWxyZWFkeSBleGlz
dHMuPGJyIGNsYXNzPSJnbWFpbF9tc2ciPjxiciBjbGFzcz0iZ21haWxfbXNnIj48L2Rpdj5Zb3Un
cmUgcHJvYmFibHkgcmlnaHQgdGhhdCB0aGlzIGlzIGFuIGFkZGl0aXZlICg0LjEpIHRoaW5nLiBC
dXQgcGVyc29uYWxseSBJIHNlZSBubyBoYXJtIGluIGJ1aWxkaW5nIHVwIGEgYmFja2xvZyBvZiB1
c2VmdWwgcHJvcG9zYWxzIHRvIGJlIHJldmlld2VkIG5leHQgeWVhci4gVGhlIGtub3dsZWRnZSBv
ZiB3aGF0J3MgdG8gY29tZSBtYXkgYWxzbyBoZWxwIGluZmx1ZW5jZSB0aGlua2luZyBvbiB3aGF0
J3MgdG8gY29tZSBuZXh0LiBTaG91bGQgc3VjaCBkaXNjdXNzaW9ucyBiZSBmbGFnZ2VkIGFzIGFk
ZGl0aXZlIGluIHRoZSBzdWJqZWN0IHNvbWVob3c/IEkgdGhpbmsgSSBhc2tlZCB0aGlzIGJlZm9y
ZSBidXQgZm9yZ290IG9yIG1pc3NlZCBpZiB0aGVyZSB3YXMgYSByZXNwb25zZS48YnIgY2xhc3M9
ImdtYWlsX21zZyI+PC9kaXY+PGJyIGNsYXNzPSJnbWFpbF9tc2ciPjxkaXYgY2xhc3M9ImdtYWls
X3F1b3RlIGdtYWlsX21zZyI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX21zZyI+T24gRnJp
LCAyNSBOb3YgMjAxNiBhdCAxNjoyMSBUaW5vIEhldGggJmx0OzxhIGhyZWY9Im1haWx0bzoydGhA
Z214LmRlIiBjbGFzcz0iZ21haWxfbXNnIiB0YXJnZXQ9Il9ibGFuayI+MnRoQGdteC5kZTwvYT4m
Z3Q7IHdyb3RlOjxiciBjbGFzcz0iZ21haWxfbXNnIj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0i
Z21haWxfcXVvdGUgZ21haWxfbXNnIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl
ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+S290bGluIGhhcyBhIGltaG8gcmVh
bGx5IG5pY2Ugc29sdXRpb24gZm9yIHRoaXM6IEJlY2F1c2UgY29uc3RydWN0b3IgcGFyYW1ldGVy
cyBhcHBlYXIgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGRlY2xhcmF0aW9uLCB5b3UgY2FuIHJlZmVy
IHRvIHRoZW0gaW4gdGhlIGluaGVyaXRhbmNlLWNsYXVzZS48YnIgY2xhc3M9ImdtYWlsX21zZyI+
CjxiciBjbGFzcz0iZ21haWxfbXNnIj4KUHJvdG9jb2wgY29uZm9ybWFuY2UgaXMgYSBxdWl0ZSBp
bXBvcnRhbnQgYXNwZWN0IG9mIGEgdHlwZSwgc28gSSdtIG5vdCBzdXJlIGlmIGl0IHdpc2UgdG8g
YWxsb3cgImhpZGluZyIgaXQg4oCUIGFuZCBJIGhvcGUgdGhlIHByb21pc2VkIG1hY3JvLXN5c3Rl
bSB3aWxsIGFsbG93IGZvcndhcmRpbmcsIHNvIHRoYXQgdGhlcmUgaXMgbm8gc3BlY2lhbCBzeW50
YXggbmVlZGVkLjxiciBjbGFzcz0iZ21haWxfbXNnIj4KPGJyIGNsYXNzPSJnbWFpbF9tc2ciPgpC
b3R0b20gbGluZTo8YnIgY2xhc3M9ImdtYWlsX21zZyI+CkltaG8gaXQncyBub3QgdGhlIHJpZ2h0
IHRpbWUgZm9yIHNlcmlvdXMgZGlzY3Vzc2lvbiAoc2VyaW91cyBtZWFuczogd2l0aCB0aGUgZ29h
bCBvZiBhIGFjY2VwdGVkIHByb3Bvc2FsIDstKTwvYmxvY2txdW90ZT48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>