<div dir="ltr">What about:<div>Optional -module attribute</div><div>+</div><div>ASCII-only lowercase filenames, composed of only chars non-escapable in a terminal (\\, spaces, controls, …)</div><div>?</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div><br></div><div>Cheers,</div><div>-- </div><div>Pierre Fenoll</div></div><div><br></div></div></div></div>
<br><div class="gmail_quote">On 19 February 2016 at 10:20,  <span dir="ltr"><<a href="mailto:ok@cs.otago.ac.nz" target="_blank">ok@cs.otago.ac.nz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> Greetings,<br>
><br>
> Given the problem with case-sensitive file systems, and identifiers in<br>
> code, why not ignore case?<br>
<br>
</span>Sadly, it's not that simple.  Consider<br>
<br>
a. i<br>
b. &#304;<br>
c. &#305;<br>
d. I<br>
<br>
Which of these count as equivalent-except-for-case depends on<br>
the natural language they are written in.<br>
<br>
It's not as if case-insensitivity were all that natural for<br>
natural languages either.  "THE" is now "TUE" but "the" has not changed.<br>
A UN-man is not an un-man.  LAX is not particularly lax.<br>
And to get away from initials,<br>
  Q: What's that band?<br>
  A: The Who.<br>
  Q: The who?<br>
  A: That's right.<br>
And I'll never forget Mrs Which, Mrs What, and Mrs Who from<br>
"A Wrinkle in Time".<br>
<span class=""><br>
> It seems to work for Eiffel. No results from searching for Eiffel and<br>
> problems with case. It is not a large language, so the number of people<br>
> that have been exposed to case insensitivity is small.<br>
<br>
</span>I suspect that most Eiffel programs are still written in Western<br>
European languages for which Latin-1 works well, except perhaps<br>
for strings.<br>
<span class="">><br>
> This would not work for Erlang, but new languages could try.<br>
<br>
</span>Unicode makes some complicated things possible and some "simple"<br>
things extremely difficult.  Dealing with alphabetic case is one<br>
of them.<br>
<br>
One of the issues with file systems and alphabetic case is that it's<br>
just not clear what actually happens.  For example, in a Unix-like<br>
system where a file name is a sequence of bytes excluding 0 and 47,<br>
whether two such sequences should count as equivalent depends on<br>
what the encoding is deemed to be.  I have certainly run into trouble<br>
with file names written in one encoding being displayed unsuitably in<br>
another, and the encoding is not (except in classic MacOS) something<br>
that is stored with the file name.  (I believe MacOS X uses UTF8.)<br>
But if we say "let file names be interpreted as UTF-8", we are *still*<br>
left with the problem that case equivalence is determined by<br>
natural language, not by encoding alone.<br>
<br>
One problem with case-insensitive languages is that the same<br>
identifier may appear as READSYMBOL, readsymbol, ReadSymbol,<br>
or even ReadSYmbol.  Some languages have dealt with this by saying<br>
that you can use any one capitalisation pattern you like: a name<br>
that appears in a scope must be capitalised identically at every<br>
occurrence.  (That amounts to saying that you must write so that<br>
your program would work equally well in a case sensitive or a<br>
case insensitive language.)<br>
<br>
Then too, there are file names that are not legal identifiers.<br>
Taking Java as an example, what should we do with a :@%%.java<br>
file?  Or even 2016.java?<br>
<br>
Like I said before, tying file names and module (or class) names<br>
together is like holding a chain-saw by the blade.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">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>