[erlang-questions] Modules and function "encapsulation"

Ulf Wiger <>
Wed Sep 1 08:33:41 CEST 2010


On 01/09/2010 06:16, Silas Silva wrote:
> On Wed, Sep 01, 2010 at 12:57:24PM +0900, Geoffrey Biggs wrote:
>> Generally, you shouldn't use the -import statement. Call functions from
>> other models explicitly using the model:function syntax (such as
>> controller:start()). Using -import makes the code harder to follow and,
>> as you discovered, leads to name clashes.
>>
>> Geoff
>
> Thank you!  I didn't realize I could use other modules functions without
> -import'ing them...  That is because I was getting name clashes.
> Thanks.

As implied in that thread, what -import does is that it lets you
call a remote function just as if it were a local function or a BIF.

E.g. using

-import(lists, [reverse/1]).

I can write reverse(L) rather than lists:reverse(L), but it is purely
a syntactical convenience, and as you discovered, knows nothing of
overriding.

The EUC talk mentioned, by Richard Carlsson, has been implemented as
an experimental feature. http://www.trapexit.org/Extend_Module

Note the experimental status. This is not to say it doesn't work -
I daresay it does - but that there is no commitment to keep the
feature as-is.

BR,
Ulf W
-- 
Ulf Wiger
CTO, Erlang Solutions Ltd, formerly Erlang Training & Consulting Ltd
http://www.erlang-solutions.com


More information about the erlang-questions mailing list