I think flat module namespaces is a defect of erlang design.<br><br>For
example, I write a foo.erl, It works well. But maybe in a late erlang
version (eg. R13B)  also write such  module named  foo.erl. Then,  you
can see  my application goes wrong.<br>
<br>How to avoid things like this? Let's see the following ways:<br><br>1. Adjust module searching paths, and let user path (which contains my foo.erl) <span style="line-height: 15px;">take precedence over erlang stdlib/otp path. But, this way can't always work well. If some other std</span>lib/otp modules use system foo.erl (not my foo.erl), Things goes wrong.<br>

<br>2. Write erlang modules always named with a prefix (a fake namespace.
For example, projectname_foo.erl or organization_projectname_foo<div id="1erw" class="ArwC7c ckChnd">.erl).
This way really can solve the problem. But, It seems ugly.<br><br>Is
there a way let's user still can call foo:func (not call foo.erl
provied by stdlib/otp, but my projectname_foo.erl)? I have a suggestion:<br><br>Can erlang provide a 'module name alias'? That is, I can rename a module's name temporarily in a module? For example:<br>
<br>-module(a_module_that_call_my_foo).<br>-alias(foo, organization_projectname_foo). %% alias<br><br>some_func_call_foo() -><br>    foo:func().  %% same as: organization_projectname_foo:func()<br><br>Currently I can do this by using the 'define' keyword. For example:<br>

<br>-module(a_module_that_call_my_foo).<br>
-define(FOO, organization_projectname_foo). %% alias<br><br>some_func_call_foo() -><br>    ?FOO:func().<br><br>It works well, but a bit ugly.</div><br><br><div class="gmail_quote">On Sat, Mar 1, 2008 at 6:51 AM, Matt Stancliff <<a href="mailto:sysop@mindspring.com">sysop@mindspring.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
On Feb 29, 2008, at 14:34, Anthony Kong wrote:<br>
<br>
> If I rename c.erl to something else, the problem goes away.<br>
><br>
> What is special about "-module(c)" ?<br>
<br>
</div>   Welcome to the world of flat module namespaces.<br>
<br>
   The code module is your friend in these circumstances.<br>
   Look into code:clash() and code:which(module).<br>
<br>
   code:which(c) should return "<base path>/lib/erlang/lib/stdlib-<br>
<ver>/ebin/c.beam"<br>
<br>
<br>
-Matt<br>
<font color="#888888">--<br>
Matt Stancliff            <a href="mailto:sysop@mindspring.com">sysop@mindspring.com</a><br>
AIM: seijimr              iPhone: 678-591-9337<br>
"The best way to predict the future is to invent it." --Alan Kay<br>
</font><div><div></div><div class="Wj3C7c"><br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br>