<div dir="ltr">Parameterized modules were not documented, but that<div style>did not prevent people from using them.</div><div style><br></div><div style>Nowadays we generally prefer to document everything,</div><div style>
but add warnings in the documentation if we think</div><div style>it could be abused. We might add such warnings to</div><div style>the documentation of $handle_undefined_function.</div><div style><br></div><div style>Although other languages may give the programmer</div>
<div style>more rope to hang himself, Erlang already provides</div><div style>plenty of rope, for instance parse_transforms, NIFs,</div><div style>and the error_handler module. Using</div><div style>$handle_undefined_function is safer than modfying</div>
<div style>error_handler, since it can be done locally to a single</div><div style>module. So we have shortened the rope. :-)</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jan 18, 2013 at 4:53 PM, Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</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 01/18/2013 04:25 PM, Björn Gustavsson wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
<br>
<br>
<br>
On Tue, Jan 15, 2013 at 1:33 PM, Erik Reitsma <<a href="mailto:erlang@ernovation.com" target="_blank">erlang@ernovation.com</a><br></div><div><div class="h5">
<mailto:<a href="mailto:erlang@ernovation.com" target="_blank">erlang@ernovation.com</a>><u></u>> wrote:<br>
<br>
    On 01/15/2013 10:41 AM, Joe Armstrong wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    Golly - I read the code - you modified error_handler.erl !!!!<br>
<br>
    So what happens is ...<br>
<br>
       I call android:fooBar(Args) - fooBar is not defined in android.erl<br>
       so it's caught in error_handler and then android:rpc(fooBar,<br>
    [...]) is called<br>
       and this ends up as a Json call to a socket -<br>
<br>
</blockquote>
    Yes, that is what happens.<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote>
It might interest you to know, that in R16, you can have a handler for<br>
undefined functions in each module. (We needed that to implement the parse<br>
transformation for parameterized modules.)<br>
<br>
This new feature has just been merged to the master branch:<br>
<br>
<a href="https://github.com/erlang/otp/commit/209a479080214ab901116d48b90e91d6c056278d" target="_blank">https://github.com/erlang/otp/<u></u>commit/<u></u>209a479080214ab901116d48b90e91<u></u>d6c056278d</a><br>
</div></div></blockquote>
<br>
This sounds like a temporary workaround with potentially very bad uses. Why was it documented?<div class="HOEnZb"><div class="h5"><br>
<br>
-- <br>
Loďc Hoguin<br>
Erlang Cowboy<br>
Nine Nines<br>
<a href="http://ninenines.eu" target="_blank">http://ninenines.eu</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Björn Gustavsson, Erlang/OTP, Ericsson AB
</div>