Re: [friam] Classification of actor languages
"Mark S. Miller" <[email protected]> Mon, 16 Feb 2015 17:13:44 -0800
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <CABHxS9hPoyyM3=ALMbzTSHD_aOA5tPuoJUVagjupO1DXk=TyZw@mail.gmail.com> |
--===============6360713405666680108== Content-Type: multipart/alternative; boundary=001a113f90fc036d0d050f3e6a2c --001a113f90fc036d0d050f3e6a2c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable What language is this in? Where can I read about this language? Are "implements", "using", "also" and "afterward" keywords of this language? On Mon, Feb 16, 2015 at 1:25 PM, Carl Hewitt <[email protected]> wrote: > *Actor **Counter**[* *]* > > * count **=E2=89=94 *0, // *count *is an assignable variable initia= lized > with 0 > > *pair**[ ]**:[**UpCounter**,* *DownCounter]*=C2=A7*=E2=86=92* *[**= =E2=8D=A0**UpCounter* > *,* *=E2=8D=A0**DownCounter]*=C2=A7 > > * implements **UpCounter* *using * > > * increment**[ ]=E2=86=92* *count*+1* afterward count*++=C2=A7 > > * also implements **DownCounter* *using * > > * decrement**[ ]=E2=86=92* *count*-1* afterward count*--=C2=A7= =E2=96=AE > > > > [anUpCounter, aDownCounter] *=E2=86=90 **Counter**[* *]**=E2=88=8E**pair*= *[ ]*=E2=96=AE > > > > Of course the following is illegal: > > aDownCounter*=E2=88=8E**increment**[ ]*=E2=96=AE > > > > > > > > > > *From:* friam-/[email protected] [mailto:friam-/[email protected]] > *Sent:* Monday, February 16, 2015 12:38 > *To:* friam > *Cc:* Discussion of E and other capability languages > *Subject:* Re: [friam] Classification of actor languages > > > > My favorite time example. If Bob is given only the upCounter and Carol is > given only the downCounter, then Bob can only increment and see the resul= t, > and Carol can only decrement and see the result. > > > > For the same thing in Dr.SES, see also slides 14 and 31 of < > http://soft.vub.ac.be/events/mobicrant_talks/talk2_OO_security.pdf>. > > > > > > > > def makeCounterPair() { > > var count :=3D 0 > > def upCounter { > to incr() { return count +=3D 1 } > } > > def downCounter { > to decr() { return count -=3D 1 } > } > > return [upCounter, downCounter] > > } > > > ? def [u, d] :=3D makeCounterPair() > # value: [<upCounter>, <downCounter>] > > ? u.incr() > # value: 1 > > ? u.incr() > # value: 2 > > ? d.incr() > # problem: <NoSuchMethodException: <a downCounter>.incr/0> > > ? d.decr() > # value: 1 > > Figure 6.5: Two Counting Facets Sharing a Slot. makeCounterPair makes a > Slot, and it makes and returns two objects sharing access to that Slot. > These three objects form a lexical composite. The returned objects are > facets of this composite. The Slot is encapsulated within this composite. > > > > > > > > > On Mon, Feb 16, 2015 at 12:23 PM, Tom Van Cutsem <[email protected]> > wrote: > > Hi Carl, > > > > 2015-02-14 1:19 GMT+01:00 Carl Hewitt <[email protected]>: > > Of course, an Actor can implement multiple interfaces. > > > > I am wondering how a =E2=80=9Cfacet=E2=80=9D relates to an interface. > > > > Indeed, an actor can implement multiple interfaces, but this typically > means that anyone having a reference to the actor can send any message fr= om > the union of all interface methods. By contrast, in a vat with multiple > facets, a reference to a facet provides access to only the methods expose= d > by that facet. Thus, facets make it easier to restrict authority. > > > > Of course, one could encode facets in a pure actor model, by passing a > token designating the facet as part of the message. The actor can be > programmed to dispatch the message to an internal object only if the toke= n > matches. But this would be an encoding of the vat model in a pure actor > model. > > > > Cheers, > > Tom > > -- > You received this message because you are subscribed to the Google Groups > "friam" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to friam+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > To post to this group, send email to friam-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > Visit this group at http://groups.google.com/group/friam. > For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > Cheers, > --MarkM > > -- > You received this message because you are subscribed to the Google Groups > "friam" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to friam+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > To post to this group, send email to friam-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > Visit this group at http://groups.google.com/group/friam. > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "friam" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to friam+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > To post to this group, send email to friam-/JYPxA39Uh5TLH3MbocFF+G/[email protected] > Visit this group at http://groups.google.com/group/friam. > For more options, visit https://groups.google.com/d/optout. > --=20 Cheers, --MarkM --001a113f90fc036d0d050f3e6a2c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">What language is this in? Where can I read about this lang= uage? Are "implements", "using", "also" and &= quot;afterward" keywords of this language?<div><br><div><br></div></di= v></div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Mon, F= eb 16, 2015 at 1:25 PM, Carl Hewitt <span dir=3D"ltr"><<a href=3D"mailto= :[email protected]" target=3D"_blank">[email protected]</a>></span> wr= ote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border= -left:1px #ccc solid;padding-left:1ex"> <div lang=3D"EN-US" link=3D"blue" vlink=3D"purple"> <div> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif">Actor </span></b><b><span style=3D"font-family:"Cambria Math",serif;col= or:#0e6835">Counter</span></b><b><span style=3D"font-family:"Cambria M= ath",serif;color:#0e6835">[</span></b><span style=3D"font-family:"= ;Cambria Math",serif"> <b><span style=3D"color:#0e6835">]</span></b> <u></u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-fami= ly:"Cambria Math",serif">=C2=A0=C2=A0=C2=A0=C2=A0<b>=C2=A0<span s= tyle=3D"color:#c55a11">count </span></b></span><b><span style=3D"font-family:"Cambria Math",se= rif">=E2=89=94 </span></b><span style=3D"font-family:"Cambria Math&quo= t;,serif">0,</span><span style=3D"font-size:14.0pt;font-family:"Cambri= a Math",serif">=C2=A0=C2=A0 </span><span style=3D"font-size:14.0pt;font-family:"Microsoft Sans Ser= if",sans-serif;color:#494949">//</span><span style=3D"font-size:14.0pt= ;font-family:"Cambria Math",serif;color:gray"> </span><b><span style=3D"font-family:"Cambria Math",serif;color:#= c55a11">count </span></b><span style=3D"font-family:"Microsoft Sans Serif",sans= -serif;color:#494949">is an assignable variable initialized with</span><spa= n style=3D"font-family:"Cambria Math",serif;color:#494949"> </span><span style=3D"font-family:"Cambria Math",serif">0<u></u><= u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif;color:#c55a11">=C2=A0=C2=A0=C2=A0 </span></b><b><span style=3D"font-family:"Cambria Math",serif;col= or:#8a008a">pair</span></b><b><span style=3D"font-family:"Cambria Math= ",serif;color:#8a008a">[ ]</span></b><b><span style=3D"font-family:&qu= ot;Cambria Math",serif">:<span style=3D"color:#2f5597">[</span></span>= </b><b><span style=3D"font-family:"Cambria Math",serif;color:#0e6= 835">UpCounter</span></b><b><span style=3D"font-family:"Cambria Math&q= uot;,serif;color:#2f5597">,</span></b><b><span style=3D"font-family:"C= ambria Math",serif;color:#0e6835"> </span></b><b><span style=3D"font-family:"Cambria Math",serif;col= or:#0e6835">DownCounter]</span></b><span style=3D"font-size:10.0pt;font-fam= ily:"Cambria Math",serif">=C2=A7</span><b><span style=3D"font-fam= ily:"Cambria Math",serif;color:#8a008a">=E2=86=92</span></b><i><s= pan style=3D"font-family:"Cambria Math",serif;color:#8a008a">=C2= =A0=C2=A0</span></i><b><span style=3D"font-family:"Cambria Math",= serif;color:#8a008a">=C2=A0</span></b><b><span style=3D"font-family:"C= ambria Math",serif;color:#2f5597">[</span></b><b><span style=3D"font-s= ize:10.0pt;font-family:"Cambria Math",serif;color:#8a008a">=E2=8D= =A0</span></b><b><span style=3D"font-family:"Cambria Math",serif;= color:#0e6835">UpCounter</span></b><b><span style=3D"font-family:"Camb= ria Math",serif;color:#2f5597">,</span></b><b><span style=3D"font-fami= ly:"Cambria Math",serif;color:#0e6835"> </span></b><b><span style=3D"font-size:10.0pt;font-family:"Cambria Mat= h",serif;color:#8a008a">=E2=8D=A0</span></b><b><span style=3D"font-fam= ily:"Cambria Math",serif;color:#0e6835">DownCounter]</span></b><s= pan style=3D"font-size:10.0pt;font-family:"Cambria Math",serif">= =C2=A7</span><span style=3D"font-family:"Cambria Math",serif"><u>= </u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif">=C2=A0=C2=A0=C2=A0 implements =C2=A0<= /span></b><b><span style=3D"font-family:"Cambria Math",serif;colo= r:#0e6835">UpCounter</span></b><b><span style=3D"font-family:"Cambria = Math",serif;color:#8a008a"> </span></b><b><span style=3D"font-family:"Cambria Math",serif">us= ing =C2=A0<span style=3D"color:#8a008a"><u></u><u></u></span></span></b></p= > <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0<span style=3D"color:#8a008a">increment</span></span></b><b><sp= an style=3D"font-family:"Cambria Math",serif;color:#8a008a">[ ]= =E2=86=92</span></b><i><span style=3D"font-family:"Cambria Math",= serif;color:#8a008a">=C2=A0=C2=A0</span></i><b><span style=3D"font-family:&= quot;Cambria Math",serif;color:#8a008a">=C2=A0</span></b><b><span styl= e=3D"font-family:"Cambria Math",serif;color:#c55a11">count</span>= </b><span style=3D"font-family:"Cambria Math",serif">+1<b> afterward <span style=3D"color:#c55a11"> count</span></b>++</span><span style=3D"font-size:10.0pt;font-family:"= Cambria Math",serif">=C2=A7<u></u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif">=C2=A0=C2=A0=C2=A0 also implements = =C2=A0</span></b><b><span style=3D"font-family:"Cambria Math",ser= if;color:#0e6835">DownCounter</span></b><b><span style=3D"font-family:"= ;Cambria Math",serif;color:#8a008a"> </span></b><b><span style=3D"font-family:"Cambria Math",serif">us= ing =C2=A0<span style=3D"color:#8a008a"><u></u><u></u></span></span></b></p= > <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif">=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0<span style=3D"color:#8a008a">decrement</span></span></b><b><sp= an style=3D"font-family:"Cambria Math",serif;color:#8a008a">[ ]= =E2=86=92</span></b><i><span style=3D"font-family:"Cambria Math",= serif;color:#8a008a">=C2=A0=C2=A0</span></i><b><span style=3D"font-family:&= quot;Cambria Math",serif;color:#8a008a">=C2=A0</span></b><b><span styl= e=3D"font-family:"Cambria Math",serif;color:#c55a11">count</span>= </b><span style=3D"font-family:"Cambria Math",serif">-1<b> <span style=3D"color:#c55a11"> =C2=A0</span>afterward <span style=3D"color:#c55a11"> count</span></b>--</span><span style=3D"font-size:10.0pt;font-family:"= Cambria Math",serif">=C2=A7</span><span><span style=3D"font-size:10.0p= t;font-family:"MS Gothic"">=E2=96=AE</span></span><span style=3D"= font-size:10.0pt;font-family:"Cambria Math",serif"><u></u><u></u>= </span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><b><span style=3D"font-f= amily:"Cambria Math",serif"><u></u>=C2=A0<u></u></span></b></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-fami= ly:"Cambria Math",serif">[anUpCounter, aDownCounter] </span><b><span style=3D"font-family:"Cambria Math",serif">=E2=86= =90 </span></b><b><span style=3D"font-family:"Cambria Math",serif= ;color:#0e6835">Counter</span></b><b><span style=3D"font-family:"Cambr= ia Math",serif;color:#0e6835">[</span></b><span style=3D"font-family:&= quot;Cambria Math",serif"> <b><span style=3D"color:#0e6835">]</span></b></span><span><b><sub><span sty= le=3D"font-size:7.0pt;font-family:"Cambria Math",serif;color:#8a0= 08a">=E2=88=8E</span></sub></b></span><b><span style=3D"font-family:"C= ambria Math",serif;color:#8a008a">pair</span></b><b><span style=3D"fon= t-family:"Cambria Math",serif;color:#8a008a">[ ]</span></b><span><span style=3D"font-size:10.0pt;font-family:"MS Got= hic"">=E2=96=AE<u></u><u></u></span></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span><span style=3D"fon= t-size:10.0pt;font-family:"MS Gothic""><u></u>=C2=A0<u></u></span= ></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-fami= ly:"Microsoft Sans Serif",sans-serif">Of course the following is = illegal:<u></u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-fami= ly:"Cambria Math",serif;color:#2f5597">=C2=A0=C2=A0=C2=A0=C2=A0 </span><span style=3D"font-family:"Cambria Math",serif">aDownCoun= ter</span><span><b><sub><span style=3D"font-size:7.0pt;font-family:"Ca= mbria Math",serif;color:#8a008a">=E2=88=8E</span></sub></b></span><b><= span style=3D"font-family:"Cambria Math",serif;color:#8a008a">inc= rement</span></b><b><span style=3D"font-family:"Cambria Math",ser= if;color:#8a008a">[ ]</span></b><span><span style=3D"font-size:10.0pt;font-family:"MS Got= hic"">=E2=96=AE</span></span><span style=3D"font-family:"Cambria = Math",serif;color:#2f5597"><u></u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-fami= ly:"Cambria Math",serif;color:#2f5597"><u></u>=C2=A0<u></u></span= ></p> <p class=3D"MsoNormal" style=3D"margin-left:4.5pt"><span style=3D"font-size= :11.0pt;font-family:"Cambria Math",serif"><u></u>=C2=A0<u></u></s= pan></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Mi= crosoft Sans Serif",sans-serif;color:black"><u></u>=C2=A0<u></u></span= ></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;font-family:"Mi= crosoft Sans Serif",sans-serif;color:black"><u></u>=C2=A0<u></u></span= ></p> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><b><span style=3D"font-si= ze:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span= style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif"> <a = href=3D"mailto:friam-/[email protected]" target=3D"_blank">friam@googlegroups= .com</a> [mailto:<a href=3D"mailto:friam-/[email protected]" target=3D"_blank= ">friam-/[email protected]</a>] <br><span class=3D""> <b>Sent:</b> Monday, February 16, 2015 12:38<br> <b>To:</b> friam<br> </span><b>Cc:</b> Discussion of E and other capability languages<br> <b>Subject:</b> Re: [friam] Classification of actor languages<u></u><u></u>= </span></p><div><div class=3D"h5"> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> <div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">My favorite time example.= If Bob is given only the upCounter and Carol is given only the downCounter= , then Bob can only increment and see the result, and Carol can only decrem= ent and see the result.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">For the same thing in Dr.= SES, see also slides 14 and 31 of <<a href=3D"http://soft.vub.ac.be/even= ts/mobicrant_talks/talk2_OO_security.pdf" target=3D"_blank">http://soft.vub= .ac.be/events/mobicrant_talks/talk2_OO_security.pdf</a>>.<u></u><u></u><= /p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">def makeCounterPair() {<u= ></u><u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">=C2=A0 =C2=A0 var count := =3D 0<u></u><u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">=C2=A0 =C2=A0 def upCount= er {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 to incr() { return count +=3D 1 }<br> =C2=A0 =C2=A0 }<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">=C2=A0 =C2=A0 def downCou= nter {<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 to decr() { return count -=3D 1 }<br> =C2=A0 =C2=A0 }<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">=C2=A0 =C2=A0 return [upC= ounter, downCounter]<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">}<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><br> ? def [u, d] :=3D makeCounterPair()<br> # value: [<upCounter>, <downCounter>]<br> <br> ? u.incr()<br> # value: 1<br> <br> ? u.incr()<br> # value: 2<br> <br> ? d.incr()<br> # problem: <NoSuchMethodException: <a downCounter>.incr/0><br> <br> ? d.decr()<br> # value: 1<br> <br> Figure 6.5: Two Counting Facets Sharing a Slot. makeCounterPair makes a Slo= t, and it makes and returns two objects sharing access to that Slot. These = three objects form a lexical composite. The returned objects are facets of = this composite. The Slot is encapsulated within this composite.<br> <br> <br> <br> <br> =C2=A0<u></u><u></u></p> </div> </div> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">On Mon, Feb 16, 2015 at 1= 2:23 PM, Tom Van Cutsem <<a href=3D"mailto:[email protected]" target=3D= "_blank">[email protected]</a>> wrote:<u></u><u></u></p> <blockquote style=3D"border:none;border-left:solid #cccccc 1.0pt;padding:0i= n 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">Hi Carl,<u></u><u></u></p= > <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">2015-02-14 1:19 GMT+01:00= Carl Hewitt <<a href=3D"mailto:[email protected]" target=3D"_blank">he= [email protected]</a>>:<u></u><u></u></p> <blockquote style=3D"border:none;border-left:solid #cccccc 1.0pt;padding:0i= n 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"> <div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"> <span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;= color:#1f497d">Of course, an Actor can implement multiple interfaces.</span= ><u></u><u></u></p> <p class=3D"MsoNormal" style=3D"margin-left:.5in"> <span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;= color:#1f497d">=C2=A0</span><u></u><u></u></p> <p class=3D"MsoNormal" style=3D"margin-left:.5in"> <span style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif;= color:#1f497d">I am wondering how a =E2=80=9Cfacet=E2=80=9D relates to an i= nterface.</span><u></u><u></u></p> </div> </div> </blockquote> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">Indeed, an actor can impl= ement multiple interfaces, but this typically means that anyone having a re= ference to the actor can send any message from the union of all interface m= ethods. By contrast, in a vat with multiple facets, a reference to a facet provides access to only the methods exposed= by that facet. Thus, facets make it easier to restrict authority.<u></u><u= ></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">Of course, one could enco= de facets in a pure actor model, by passing a token designating the facet a= s part of the message. The actor can be programmed to dispatch the message = to an internal object only if the token matches. But this would be an encoding of the vat model in a pure actor mo= del.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">Cheers,<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">Tom<u></u><u></u></p> </div> </div> </div> </div> <div> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">-- <br> You received this message because you are subscribed to the Google Groups &= quot;friam" group.<br> To unsubscribe from this group and stop receiving emails from it, send an e= mail to <a href=3D"mailto:friam+unsubscribe-/[email protected]" target=3D"_blank">fri= am+unsubscribe-/[email protected]</a>.<br> To post to this group, send email to <a href=3D"mailto:[email protected]= om" target=3D"_blank"> friam-/[email protected]</a>.<br> Visit this group at <a href=3D"http://groups.google.com/group/friam" target= =3D"_blank"> http://groups.google.com/group/friam</a>.<br> For more options, visit <a href=3D"https://groups.google.com/d/optout" targ= et=3D"_blank"> https://groups.google.com/d/optout</a>.<u></u><u></u></p> </div> </div> </blockquote> </div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><br> <br clear=3D"all"> <u></u><u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in"><u></u>=C2=A0<u></u></p> </div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">-- <u></u><u></u></p> <div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">=C2=A0 =C2=A0 Cheers,<br> =C2=A0 =C2=A0 --MarkM<u></u><u></u></p> </div> </div> <p class=3D"MsoNormal" style=3D"margin-left:.5in">-- <br> You received this message because you are subscribed to the Google Groups &= quot;friam" group.<br> To unsubscribe from this group and stop receiving emails from it, send an e= mail to <a href=3D"mailto:friam+unsubscribe-/[email protected]" target=3D"_blank">fri= am+unsubscribe-/[email protected]</a>.<br> To post to this group, send email to <a href=3D"mailto:[email protected]= om" target=3D"_blank">friam-/[email protected]</a>.<br> Visit this group at <a href=3D"http://groups.google.com/group/friam" target= =3D"_blank">http://groups.google.com/group/friam</a>.<br> For more options, visit <a href=3D"https://groups.google.com/d/optout" targ= et=3D"_blank">https://groups.google.com/d/optout</a>.<u></u><u></u></p> </div></div></div> </div><div class=3D"HOEnZb"><div class=3D"h5"> <p></p> -- <br> You received this message because you are subscribed to the Google Groups &= quot;friam" group.<br> To unsubscribe from this group and stop receiving emails from it, send an e= mail to <a href=3D"mailto:friam+unsubscribe-/[email protected]" target=3D"_bl= ank">friam+unsubscribe-/[email protected]</a>.<br> To post to this group, send email to <a href=3D"mailto:[email protected]= om" target=3D"_blank">friam-/[email protected]</a>.<br> Visit this group at <a href=3D"http://groups.google.com/group/friam" target= =3D"_blank">http://groups.google.com/group/friam</a>.<br> For more options, visit <a href=3D"https://groups.google.com/d/optout" targ= et=3D"_blank">https://groups.google.com/d/optout</a>.<br> </div></div></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>= <div class=3D"gmail_signature">=C2=A0 =C2=A0 Cheers,<br>=C2=A0 =C2=A0 --Mar= kM</div> </div> --001a113f90fc036d0d050f3e6a2c-- --===============6360713405666680108== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ e-lang mailing list [email protected] http://www.eros-os.org/mailman/listinfo/e-lang --===============6360713405666680108==--