[erlang-questions] Why do we need modules at all?

Edmond Begumisa ebegumisa@REDACTED
Wed May 25 09:28:51 CEST 2011


On Wed, 25 May 2011 17:11:48 +1000, Bengt Kleberg  
<bengt.kleberg@REDACTED> wrote:

> Moreover, to solve the problem this should work for two different beam
> modules, having the same name, being used at the same time. Since they
> are already compiled we must do the mapping outside of the modules.
>
>
> bengt
>

Yes, in my second suggestion the mappings would be outside the modules, in  
a single "manifest" file. This idea comes from the way "chrome.manifest"  
and the "chrome://" URI works in Mozilla (those who've written  
Firefox/Thunderbird extensions would be familiar with it.)

The code loader would have to consult the manifest file for the "real"  
locations of the modules. That's what I was trying to describe here...

> 2. Expanding on this: letting the programmer centralise the possible  
> locations of modules/functions and use this to define namespaces...
>
> One possible way of doing this is to steal from the "chrome  
> registration" system that the Mozilla Framework uses. A programmer could  
> define one-level deep namespaces in a configuration file which points to  
> targets that could come from anywhere, then use that in her modules. A  
> module could then start...
>
> -import(["erlang://misc/collect_int", "erlang://couch/mapreduce"]).
>
> Where "misc" and "couch" are namespaces and "erlang://" is a special URI  
> scheme telling the code loader to refer to the configuration file  
> "erlang.manifest" which would contain...
>
> [{"misc", "file://./ebin/misc.beam"},
>   {"couch", "http://localhost:7777/ebin/"}]
>
> Where "couch" points to a yaws server serving couch beams, or something  
> along those lines. Then she can easy switch between different code  
> sources using one file.
>
> A code-signing system could also be introduced.
>

- Edmond -


> On Wed, 2011-05-25 at 09:07 +0200, Richard O'Keefe wrote:
>> On 25/05/2011, at 3:34 PM, Edmond Begumisa wrote:
>>
>> > Hello Joe,
>> >
>> > I've personally wanted an easy way to load modules from different  
>> places.
>> >
>> > If you started with making modules easy to load from different  
>> places, then later provide support for functions, I imagine this would  
>> be easier to implement immediately and easier for people to make use of  
>> immediately ... where "people" refers to me :)
>> >
>> > I've got two suggestions (mostly inspired by the Mozilla Framework)...
>> >
>> > 1. How about letting the programmer choose where the functions come  
>> from (kv store, fs, web-server, etc)...
>> >
>> > For instance, a module could start...
>> >
>> > -import(["file://misc/collect_int", "http://erlang.org/lists/*",  
>> "mnesia://db1/misc/merge_kv"]).
>>
>> Why does this have to be done inside the module?
>> Why cannot the mapping from module names to sources
>> be *outside*, like an SGML (or XML) catalogue,
>> or a .lace file?
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions


-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



More information about the erlang-questions mailing list