<br><br><div class="gmail_quote">On Sat, Feb 18, 2012 at 8:58 AM, Joe Armstrong <span dir="ltr"><<a href="mailto:erlang@gmail.com">erlang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Sat, Feb 18, 2012 at 5:16 PM, Jesse Gumm <<a href="mailto:gumm@sigma-star.com">gumm@sigma-star.com</a>> wrote:<br>
> Well that is good news to hear that param modules are here to say.<br>
<br>
</div>Well actually it's the abuse of PMs that will stay.<br>
<br>
That {Mod,a,b,c}:foo(x,y) means foo(x,y,{Mod,a,b,c})<br>
is an accidental side effect of the way parameterised modules<br>
were implemented.<br>
<br>
The "official way of creating a PM" is with Mod:new(...)<br>
and NOT PM = {Mod,a,b,c}. Somebody (I don't know who)<br>
discovered how to build a PM *without* calling Mod:new.<br>
<br>
I discovered this when reading the misultin code since this<br>
has never been documented. I fell mentally off my chair - I had no<br>
idea this was possible. I think (I speculate here) that<br>
misultin got the idea from mochiweb, but how mochiweb got the idea I know not.<br>
<br>
It's actually a very nice mechanism - the MFA and fun alternatives are<br>
a few characters more and less pretty<br>
so it will stay.</blockquote><div><br></div><div>I think that the paper introducing PMs mentioned it, but it's hard not to see what the representation of a PM looks like at the prompt.</div><div><br></div><div>-bob</div>
<div> </div></div>