<font size=2 face="sans-serif">Hello all,</font>
<br>
<br><font size=2 face="sans-serif">Sorry for this shameless plug, but there
is at least one option very similar to what is mentioned in the various
exchanges: WOOPER (</font><a href=http://ceylan.sourceforge.net/main/documentation/wooper/><font size=2 face="sans-serif">http://ceylan.sourceforge.net/main/documentation/wooper/</font></a><font size=2 face="sans-serif">).</font>
<br>
<br><font size=2 face="sans-serif">State management, some kind of polymorphism
and multiple inheritance are provided. </font>
<br>
<br><font size=2 face="sans-serif">This version is pretty ancient, but
we can share more recent versions thereof (still in the 1.x branch) that
we use on a daily basis and are rather satisfactory despite their simplicity.</font>
<br>
<br><font size=2 face="sans-serif">Maybe a bit later we will be able to
share the versions in the newer WOOPER 2.x branch, based on a parse-transform
and maps, adding passive instances (term-based, instead of process-based),
featuring attribute and method qualifiers, inheritance-aware build system,
a bit of tooling (to generate UML-like diagrams), etc. </font>
<br>
<br><font size=2 face="sans-serif">Hope this helps,<br>
Best regards,</font>
<br><font size=2 face="sans-serif"><br>
Olivier.<br>
---------------------------<br>
Olivier Boudeville<br>
<br>
EDF R&D : 1, avenue du Général de Gaulle, 92140 Clamart, France<br>
Département SINETICS, groupe ASICS (I2A), bureau B-226<br>
Office : +33 1 47 65 59 58 / Mobile : +33 6 16 83 37 22 / Fax : +33 1 47
65 27 13</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>ok@cs.otago.ac.nz</b> </font>
<br><font size=1 face="sans-serif">Envoyé par : erlang-questions-bounces@erlang.org</font>
<p><font size=1 face="sans-serif">12/05/2014 07:00</font>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">A</font></div>
<td><font size=1 face="sans-serif">ok@cs.otago.ac.nz</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td><font size=1 face="sans-serif">erlang-questions@erlang.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Objet</font></div>
<td><font size=1 face="sans-serif">Re: [erlang-questions] mutable state</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><tt><font size=2>On second thought, the obvious and natural way to
model<br>
objects in Erlang is as processes.<br>
<br>
An object executes<br>
<br>
loop(Var1, Var2, ..., Varn) -><br>
    receive<br>
        {selector,Arg...} -><br>
            do some stuff,<br>
            loop(Var1', Var2', ..., Varn')<br>
      ; ...<br>
    end.<br>
<br>
This is pretty much what Hewitt's actors did, and pretty much<br>
what an early version of Smalltalk did.<br>
<br>
You get objects with identity and state; you get synchronous<br>
and asynchronous message sends; you get *distributed* objects.<br>
The one thing you do not get is classes, although delegation is<br>
easy to arrange.<br>
<br>
However, inheritance is simply a way of *writing* OO programs;<br>
there doesn't have to be anything analogous to inheritance<br>
happening at run time.<br>
<br>
(Come to think of it, you *could* have classes and inheritance.)<br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
erlang-questions@erlang.org<br>
</font></tt><a href="http://erlang.org/mailman/listinfo/erlang-questions"><tt><font size=2>http://erlang.org/mailman/listinfo/erlang-questions</font></tt></a><tt><font size=2><br>
</font></tt>
<br><p></p>

<p><br>
Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis à l'intention exclusive des destinataires et les informations qui y figurent sont strictement confidentielles. Toute utilisation de ce Message non conforme à sa destination, toute diffusion ou toute publication totale ou partielle, est interdite sauf autorisation expresse.</p>

<p>Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de votre système, ainsi que toutes ses copies, et de n'en garder aucune trace sur quelque support que ce soit. Nous vous remercions également d'en avertir immédiatement l'expéditeur par retour du message.</p>

<p>Il est impossible de garantir que les communications par messagerie électronique arrivent en temps utile, sont sécurisées ou dénuées de toute erreur ou virus.<br>
____________________________________________________</p>

<p>This message and any attachments (the 'Message') are intended solely for the addressees. The information contained in this Message is confidential. Any use of information contained in this Message not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval.</p>

<p>If you are not the addressee, you may not copy, forward, disclose or use any part of it. If you have received this message in error, please delete it and all copies from your system and notify the sender immediately by return message.</p>

<p>E-mail communication cannot be guaranteed to be timely secure, error or virus-free.</p>