Re: Module naming and identification

Kevin Reid <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Apr 9, 2009, at 20:40, [email protected] wrote:

> Hi folks,
>
> Kris Kowal and I have been thinking about modules in JavaScript a  
> lot. :) Our current proposal (which should be unsurprising to this  
> list) contains a loader which turns module identifiers into maker  
> functions, which can then be instantiated with some capabilities.  
> (For the current stage of our proposal, it is wrapped in a  
> "require()" function that uses a "sandbox" abstraction, but this  
> fact may be safely ignored because it is just a thin layer on top of  
> maker functions.)
>
> So far, we have left somewhat open the question of the syntax and  
> semantics of module identifiers. This document, with lots of help  
> from Kris and MarkM, is an attempt to address this question a bit:
>
>   http://docs.google.com/Doc?id=dfgxb7gk_61d47876fr
>
> Comments welcome as always.

- The notion of naming modules with URIs is good. It would be better  
if there was a standardized URI-which-designates-the-data-with-this- 
hash -- this would fulfill the use case of "avoid code duplication,  
but don't specifically rely on anybody else's server or have to change  
the identifier to point at my server".


- Your use of "local names" is confusing to me. I think there are  
three namespaces at issue here:

    1. The names by which "this program/module" refers to other  
modules. These are lambda names, in our terminology.

    2. The URI of a "package" -- a global name.

    3. An name identifying a "module" within a given "package".

You seem to use the term "local name" for both 1 and 3. Just as you  
point out that Perl/Python style module systems conflate these, I  
think you should establish clearly distinct terms for them.


- Other than this, your design seems quite nicely similar to the one  
in my head that I've been meaning to implement for E -- except that  
you call a "package" what I call a "module", and your "modules" would  
then be my individual objects in a module. Are your "modules"  
namespaces of application-specific objects, or are they such objects  
themselves?

(These "application-specific objects" would be such things as makeFoo  
functions in an E system.)

-- 
Kevin Reid                            <http://homepage.mac.com/kpreid/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.