<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 13.09.2010 12:11, Irakli Gozalishvili wrote:
    <blockquote
      cite="mid:AANLkTi=Jeh8zEkbvkLAzqzzX71rrqCDNqXwnORXMid2E@mail.gmail.com"
      type="cite">Hi,<br>
      <br>
      Not a long time ago we also started using traits at [Jetpack](<a
        moz-do-not-send="true" href="http://mozillalabs.com/jetpack/">http://mozillalabs.com/jetpack/</a>)
      and so far it seems to work pretty well for us. In contrast to
      bespin though we don't use <a moz-do-not-send="true"
        href="http://traitsjs.org/" target="_blank">traitsjs.org</a>
      instead we have our own implementation which pretty much follows
      same APIs (one major difference is non-|this|-bounded objects are
      created).<br>
      <br>
    </blockquote>
    <br>
    Regarding non-|this|-bounded -- yeah, I think that it's better to
    use exactly a delegation and reuse functions from mixed modules.
    Despite that properties are references to the same objects,
    augmented (with traits or mixins) objects have own properties, that
    decreases reusing (if to remove a function from a trait, it still
    will be exists in the augmented object). Currently, it's easily
    possible to implement delegation based traits/mixins even in ES3
    (though, with non-standard extenstion such as __proto__ and
    __noSuchMethod__, for example: <a class="moz-txt-link-freetext" href="http://gist.github.com/575982">http://gist.github.com/575982</a>). With
    using new Proxies (and possibly WeakMap) mechanism it's should be
    possible to implement them for Harmony.<br>
    <br>
    Also, regarding syntax: it would be good to have these new concepts
    syntactically minimalized (it's too long/boring) to write every
    time: Trait.create-Trait.required-Trait-compose-Trait-required-etc.
    Possibly, a new keyword (that I saw used in other languages) would
    be good (if of course traits will be accepted):<br>
    <br>
    trait Enumerable {<br>
      required: ["forEach"],<br>
      map: (item) {<br>
        ... <br>
      }<br>
    }<br>
    <br>
    class Hash extends Object {<br>
      include Enumerable<br>
      private:<br>
        function handleItem() {<br>
          ...<br>
        }<br>
      public:<br>
        function get() {}<br>
        function set() {}<br>
    }<br>
    <br>
    P.S.: Though, I noticed that all Marks / Toms examples are
    penetrated with <i>const</i> and <i>freeze</i> keywords, just as
    it's a static language (in a function, e.g. there are only
    const-const-const -- for variables or functions -- no matter and
    then the frozen object is returned). Maybe because of that they used
    "bound-this" and "non-inheritable classes-as-sugars"?<br>
    <br>
    Dmitry.<br>
    <br>
    <blockquote
      cite="mid:AANLkTi=Jeh8zEkbvkLAzqzzX71rrqCDNqXwnORXMid2E@mail.gmail.com"
      type="cite">BTW there is another framework that was using traits
      for a long time <a moz-do-not-send="true" href="http://joose.it/">http://joose.it/</a>
      not sure how widely adopted framework is though. <br>
      <br clear="all">
      Regards<br>
      <span style="color: rgb(153, 153, 153);">--</span><br
        style="color: rgb(153, 153, 153);">
      <span style="color: rgb(153, 153, 153);">Irakli Gozalishvili</span><br
        style="color: rgb(153, 153, 153);">
      <span style="color: rgb(153, 153, 153);">Web: <a
          moz-do-not-send="true" style="color: rgb(153, 153, 153);"
          href="http://www.jeditoolkit.com/" target="_blank">http://www.jeditoolkit.com/</a></span><br
        style="color: rgb(153, 153, 153);">
      <span style="color: rgb(153, 153, 153);"></span><span
        style="color: rgb(153, 153, 153);">Address: <a
          moz-do-not-send="true" href="http://goo.gl/maps/3CHu"
          target="_blank">29 Rue Saint-Georges, 75009 Paris, France</a></span><br>
      <br>
      <br>
      <div class="gmail_quote">On Sat, Sep 11, 2010 at 01:55, David
        Herman <span dir="ltr">&lt;<a moz-do-not-send="true"
            href="mailto:dherman@mozilla.com">dherman@mozilla.com</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div class="im">&gt; Yes, that's an accurate summary. It also
            brings me back to Dave's earlier question about the limited
            choices provided by the Traits library.<br>
          </div>
          &gt; ...<br>
          <div class="im">&gt; Long story short: it's definitely
            possible for a Traits library to offer more knobs, although
            I'm not sure whether the increased complexity is worth it.<br>
            <br>
          </div>
          Just to be clear, I wasn't saying we should consider *more*
          knobs, just that other knobs are possible. I'm not convinced
          that the Trait.create knob offered by traits.js is necessary.<br>
          <div class="im"><br>
            &gt; Judging from earlier comments, it seems there is at
            least a niche for the combination of 'early conflict
            detection' + 'non-frozen, non-|this|-bound objects'.<br>
            <br>
          </div>
          I'm told this is what our colleagues working on Skywriter
          would have preferred.<br>
          <div>
            <div class="h5"><br>
              Dave<br>
              <br>
              _______________________________________________<br>
              es-discuss mailing list<br>
              <a moz-do-not-send="true"
                href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
              <a moz-do-not-send="true"
                href="https://mail.mozilla.org/listinfo/es-discuss"
                target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
es-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a>
<a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>