<div dir="ltr"><div>&quot;Mixins&quot; is as an extension for POP that adds the ability to mix in stored properties. Deciding by possibilities/power:</div><div>protocol &lt; class</div><div>[protocol, mixin] ~= class</div><div>~= means approximately equals</div><div><br></div><div>Classes are still more powerful in that they can be reference counted and can form hierarchies of fully defined types. For all other purposes:</div><div>[protocol, mixin] = class</div><div><br></div><div>So we still have OOP and POP (class and struct), but POP gets enhanced.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><pre style="white-space:pre-wrap;color:rgb(0,0,0)">&gt;<i> On Feb 28, 2016, at 09:02, Trent Nadeau via swift-evolution &lt;swift-evolution at <a href="http://swift.org" target="_blank">swift.org</a>&gt; wrote:
</i>&gt;<i> 
</i>&gt;<i> In the proposal, I would recommend stressing how this both subsumes abstract classes and allows similar functionality on value types.
</i>&gt;<i> 
</i>
On the subject of ‘subsuming’…  it seems with this proposal we now have three approaches to solving the problem of code reuse/specialization: OOP, POP, and Mixin Oriented Programming (MOP).  The decision about which approach to use makes the learning curve steeper.  Perhaps there is some way to generalize or unify the three approaches, and flatten the learning curve?

In any case, I’m hesitant to add new directions to the language until the current ones have been given the benefit of some more time.

Matt</pre></blockquote></div>