Steve D'Aprano <steve+pyt...@pearwood.info>: > On Fri, 9 Dec 2016 09:34 pm, Marko Rauhamaa wrote: >> Steve D'Aprano <steve+pyt...@pearwood.info>: >>> No that's incorrect. It isn't that . and .. are forbidden, but they >>> are reserved: every single directory in Unix file systems have a . >>> and .. directory entry. So they are legitimate directory names -- >>> they're just not names you can use for your own files, as they are >>> already in use. >> >> Same difference. > > Of course they are different.
You are not allowed to name your next file "." or ".." or "1/8". >> you could have defined pathnames as lists of strings. Then, >> everything would be unambigous and there wouldn't be any taboo or >> reserved names. > > I really don't think so. > > So what path does [] represent? That's the root directory. > How do you distinguish between the root directory / and no pathname at > all in a syntactically correct, unambiguous manner, using only lists? I don't know what you mean. > What path does [[]] represent? How about [[], []]? Those are not lists of strings (see above). > Here's a nice one for you to think about: > > L = []; L.append(L) > > What path does L represent? That's not a list of strings. > How would it be represented in the file system? > > What about this "path"? [None, 23, float('NAN'), {}] That's not a list of strings. > What's the difference between ['a', 'b', 'c'] and ['a', ['b', ['c']]] as > path names? Only the first one is a legal pathname. > How do you represent the current and previous directory in a list > without reserving identifiers for them? My idea covered absolute pathnames only. > How do you distinguish between '/home/steve' and '/home/steve/' for those > programs that (rightly or wrongly) need to distinguish them? I wouldn't. That distinction would have to be made some other way. > How do you handle alternate data streams? Or versioning information, for > systems like VMS that track that? I am only talking about pathnames. > What about file systems where you can have multiple roots? E.g. Windows, C > \file versus D:\file and classic Mac Floppy:file and HardDrive:file? I would only have one root. > Do you really imagine that if Python were a shell, and required system > administrators to write things like: > > mount ['dev', 'dvd'] ['mount', 'dvd'] > > instead of > > mount /dev/dvd /mount/dvd > > that it would have been a success? Dunno. I've been burned by bash so often that solid ground is what I yearn for most. >> BTW, guile allows *any* characters in an identifier. Even the empty name >> is a valid identifier: > > And are Guile programs improved by having the empty string as an > identify? Point is, it's not at all impossible to remove the limitations on what can go in names, filenames or otherwise. > When was the last time you were coding and you thought "This program > would be so much easier to understand and maintain if only I could > name this the empty string"? Having to be on constant lookout for corner cases is the problem. Marko -- https://mail.python.org/mailman/listinfo/python-list