It looks interesting, but how this relates to the state issue?
I think it would be very nice to be able to apply a trait directly to an object, without having to create a new class.This is possible for example in scala:�val myObject = new MyClass with MyTraitI have programmed a simple implementation in Pharo which allows you to do:myObject := (MyClass with: MyTrait) new.The implementation is only a proof of concept and has some issues that should be addressed before being able to use it in a real program, but I can make it available if someone is interested.What do you think about this?On Thu, Feb 16, 2012 at 11:04 AM, Hernan Wilkinson <hernan.wilkinson@10pines.com> wrote:
I have an idea about the state issue in traits, maybe you thought about it too... I was thinking that the definition of representing something as state or not should be responsibility of the implementation, that is the class (nothing new here), so we delay that decision until the trait is used.�So, maybe what we need is a way to indicate that a message send in a trait is not really that in a class... For example:TraitA>>m1� �� � ^self name firstObject subclass: #ClassA�� � uses: #TraitA�� � mapping: (MessageSendToInstanceVariable from: #name to: 'firstName') ... bla bla.So, #m1 in ClassA would look like:ClassA>>m1� �^firstName firstOf course this implies some complexity when copying the behavior from the trait to the class (we can not use the same compiled method), also maintaining the relationship with changes on the trait (what happens if #m1 is changed in TraitA and does not send #name anymore), etc.First class slot (a la Self) would be a nicer solution, but I feel that that implies a more radical change on the object model, vm, etc. and also has the�disadvantages�of making all state public (unless something is done to avoid that).At the same time, I would like to point out that having subclassing and traits at the same time as sharing mechanism is kind of confusing, programmers do not know which one is better to use, should I subclass or use a trait? how I'm sure which one is better? etc. We talk about this when you came to Argentina, do you remember? A student did his tesis about removing subclassing and using only traits as sharing tool, but the results were not as good as I�expected�(sadly, the thesis is written in�Spanish...)Anyway, my two centsHernan. ��On Thu, Feb 16, 2012 at 4:56 AM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
On Feb 15, 2012, at 11:30 PM, Hernan Wilkinson wrote:
> what is the difference with the current trait implementation in pharo? I could not see the difference�
Stefan replied but what I wanted to say is that I would like to have the time to see how we can introduce more nicely traits.
Right now there are edges where this is ugly and also rethink the system. I think that if we would have first class slots we could have
traits with state in a much better fashion.
Stef
> On Wed, Feb 15, 2012 at 7:45 AM, St�phane Ducasse <stephane.ducasse@inria.fr> wrote:
> Indeed. Now I would love that we rethink our trait implementation and tool support but no time.
>
> On Feb 15, 2012, at 6:40 AM, blake wrote:
>
> > This is kinda cool:
> >
> > http://phpmaster.com/using-traits-in-php-5-4/
> >
>
>
>
>
>
> --
> Hern�n Wilkinson
> Agile Software Development, Teaching & Coaching
> Mobile: +54 - 911 - 4470 - 7207
> email: hernan.wilkinson@10Pines.com
> site: http://www.10Pines.com
> Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina
>
--Hern�n Wilkinson
Agile Software Development, Teaching & Coaching
Mobile: +54 - 911 - 4470 - 7207
email: hernan.wilkinson@10Pines.com
site:�http://www.10Pines.comAddress: Paraguay�523, Floor 7 N, Buenos Aires, Argentina