[erlang-questions] Why we need a -module() attribute?

Joe Armstrong <>
Fri Feb 19 21:52:50 CET 2016


While on the subject of modules ...

I think there should be 'anonymous modules' and registered modules
(just like processes):

For processes:

    Pid = spawn(fun() -> ... end)

Creates a process, but only the process which created the process can say

    Pid ! Message

Other process do not know the value of Pid so they can't send any
messages to Pid.

This is inconvenient so we can say register(foo, Pid) and thereafter *any*
process can say `foo ! Message`

I would like to see:

    Mod = load_code(Bin)

after which the parent can say Mod:func(....) and register(Name, Mod)
and then *any* process can call foo (just like registered processes)

With such a mechanism we could declare and use private modules which are not
globally visible.

(The same should be true for ets tables and ports) - also Modules
should be linkable
and sent exit signals to their link set when deleted.

Just make everything behave like processes.

Cheers

/Joe


On Fri, Feb 19, 2016 at 6:00 PM, Fred Hebert <> wrote:
> On 02/19, Loïc Hoguin wrote:
>>
>>
>> You never had the error that the module name doesn't match the file name?
>>
>
> Frankly the only times I got the error was when I was either:
>
> 1. Making copies of modules for benchmarks or comparisons and forgetting to
> change the names. This error was necessary since I couldn't run 3 modules
> all with the same name without issue. Much appreciated
>
> 2. Moving files around and I forget to rename the module. I tend to like
> things to be in order and I appreciate the reminder that renaming a file
> means I should probably rename the module.
>
> It's annoying that it's mandatory, but I can't really think of too many
> cases where I want to look for a module, and must find it in a
> differently-named file. I guess I could use grep/awk/ack to move around, but
> I quite like just opening a file with the right name.
>
> I always thought of the feature as a net positive given it forces me to keep
> things clean and consistent.
>
> One module per file is something I'm more open to argue about, but filename
> must match the module name is definitely a plus for me.
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions


More information about the erlang-questions mailing list