Timothy S. Nelson wrote:
Hi all. I know we usually run on forgiveness instead of
permission, but I'm suggesting a big change (or extension, anyway), so
I wanted to run the ideas by you all before I put the effort in. If I
don't get feedback, I'll just make the changes.
The first thing I wanted to suggest was that in S16, the
OS-specific stuff be split out into separate roles. I suspect this is
mostly non-controversial, so I'll do that unless someone complains.
My second thought is that we need to specify tree objects (see
http://www.mail-archive.com/perl6-language@perl.org/msg28579.html ).
I'll put them in S16 unless someone complains.
My third thought is that it would be very useful also to have
date/time objects that integrate well with eg. ctime, mtime, and the
like; I'd start with Time::Piece as a model.
http://search.cpan.org/dist/Time-Piece/Piece.pm
My final question is, since people are now getting somewhat
familiar with the "file:" URI scheme (ie. file:/home/wayland/Notes.txt
or file:/C/Documents and Settings/wayland/Notes.txt or whatever), I'm
wondering if this isn't how we should be specifying our files; it's
prettier than File::Spec :), and unified.
Anyway, HTH,
I like all the default suggestions.
It seems to me that a path, whether within a file system or across the
internet, leads to a location. A location is a container for files. A
file is a container for data.
Given the strong typing paradigm of Perl6, it seems to me that the
specification should distinguish between files and locations.
It seems to me that unix blurs the difference between a file and a
directory (at least readdir returns both file and directory names and
the programer then needs a test to distinguish them), but that does not
mean they are not conceptually different.
For example, it is sensible to have a .files() method for a directory,
but it is not sensible for such a method to exist for a file. Meanwhile,
print/say/putc are not sensible for a directory/location.
Moreover, if perl6 distinguishes between a location and a file, then the
spec can distinguish between a .children() method that provides a list
of child locations (viz., sub-directories) and .files(), which provides
a list of the contents of the location.
Regards,
Richard