<div dir="ltr"><div><div><div><div><div>I have missed this discussion. Some comments though:<br><br></div>- LFE now supports defining multiple modules in one file so you lose the coupling module name <-> file name. It is sometimes practical but I am not sure I like.<br></div>- I wouldn't like a hierarchical module namespace which couples the module name to the directory structure.<br></div>- I don't think I would like a hierarchical module namespace at all anyway. I agree with Joe that a name, in this case a module name, should only refer to one thing and each thing should only have one name. So having aliases as in Elixir may mean less characters to type but make things more difficult to understand.<br></div>- I honestly don't see the problem with having to declare the name of the module, even if you only have one module per file.<br><br></div>Robert<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 26 February 2016 at 07:55, Bengt Kleberg <span dir="ltr"><<a href="mailto:bengt.kleberg@ericsson.com" target="_blank">bengt.kleberg@ericsson.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Greetings,<br>
<br>
It would be sufficient (for me) if Erlang provided dictionaries (name spaces) with words (identifiers).<br>
The modules/atoms/pids/? in one dictionary would have to be allowed to look the same as in another, without being the same. And I must be able to access them all from my code.<br>
<br>
This would be more useful (for me) than having parts of the module name taken from the file system.<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
bengt</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On 02/25/2016 10:31 AM, Joe Armstrong wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Wed, Feb 24, 2016 at 10:46 AM, Konstantin Vsochanov <<a href="mailto:kost@rol.ru" target="_blank">kost@rol.ru</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 2/23/16 01:30 , Richard A. O'Keefe wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I do not recall ever seeing -module coming up here before.<br>
I certainly don't recall a long thread like this one.<br>
<br>
</blockquote>
Maybe because people who stumble over -module() too shy to write to<br>
erlang mail list?<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
#!/bin/sh<br>
#Usage: edit module<br>
case "$1" in<br>
  */*)  echo "Module name may not contain /"   >/dev/stderr; exit 1 ;;<br>
  -*)   echo "Module name may not start with -">/dev/stderr; exit 1 ;;<br>
  *\'*) echo "Module name may not contain '"   >/dev/stderr; exit 1 ;;<br>
  *\\*) echo "Module name may not contain \\"  >/dev/stderr; exit 1 ;;<br>
  *)    ;;<br>
esac<br>
file="$1.erl" # Beware: file system may mangle name!<br>
if [ ! -e "$file" ]; then<br>
    date=`date +%Y-%m-%d`<br>
    case `expr "$1" : '^[a-z][a-zA-Z0-9_]*$'` in<br>
     0) module="'$1'" ;;<br>
     *) module="$1"   ;;<br>
    esac<br>
    echo "%%% File   : $file"     >"$file"<br>
    echo "%%% Author : $LOGNAME" >>"$file"<br>
    echo "%%% Created: $date"    >>"$file"<br>
    echo "%%% Purpose: "         >>"$file"<br>
    echo ""                      >>"$file"<br>
    echo "-module($module)."     >>"$file"<br>
    echo ""                      >>"$file"<br>
    echo "-export(["             >>"$file"<br>
    echo " ])."                  >>"$file"<br>
    echo ""                      >>"$file"<br>
fi<br>
exec ${EDITOR:-emacs} "$file"<br>
<br>
So here's how much burden -module adds to this programmer:<br>
instead of<br>
  % emacs foobar.erl<br>
I have to type<br>
  % edit foobar<br>
<br>
Hang on, that's LESS work.<br>
<br>
</blockquote>
Thank you for the script, I think it will work for me. I personally<br>
don't use emacs, but it doesn't matter.<br>
<br>
Reading all this long thread I must agree, the -module() is not the<br>
worst problem in Erlang.<br>
<br>
Regarding modules, I think the flat space for module names is more<br>
troubling. If you look at almost any Erlang library/application, you can<br>
see, that file names are like<br>
<br>
myapp_file1.erl<br>
myapp_file2.erl<br>
myapp_subsystem1_file1.erl<br>
...<br>
<br>
So we manually implement hierarchic module system. It's a clear sign,<br>
that something going wrong or is missing.<br>
</blockquote>
No - I fundamentally disagree - I think that all module names should be unique<br>
ie in a flat name space.<br>
<br>
Why? It's all about the meanings of words - when I use a word it's<br>
meaning should<br>
not depend upon context - it would be nice if this were the case.<br>
<br>
If two people use the same word it should have the same meaning and there should<br>
be one place to look up the word.<br>
<br>
We should agree on the place to lookup the word. So for example, in English<br>
I might say all the words I'm going to use are in the Chambers English<br>
dictionary.<br>
<br>
Dictionaries have flat structures - The Second Edition of the  Oxford<br>
English Dictionary has 171,476 words, in alphabetical order so it's<br>
easy to find them.<br>
<br>
If all module names are unique then we can put all the modules in one directory<br>
so we'll know where to find them - so several very difficult problems go away.<br>
<br>
This solves all these problems:<br>
<br>
1) I know the module name but I can't find it<br>
<br>
2) I know the module name but a module with this name is in<br>
      dozens of different directories<br>
<br>
3) I have a new module and I don't know what directory to store it in<br>
<br>
Dictionaries are fantastic because we know where to find words - file systems<br>
are horrible because we don't know where to find things.<br>
<br>
I can imagine having different dictionaries, French, German etc - so I can<br>
imaging different large collections of modules - which is akin to<br>
having a two-level<br>
namespace. With rather few top-level names (like dictionaries)<br>
<br>
If you want to simulate stucture then by all means add underscores to the names<br>
this_sub_module is fine '_' has no semantics and is purely a<br>
linguistic convention (just like this.sub.module )<br>
<br>
/Joe<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div>