On 01/11/11 14:36, Alex Shinn wrote: > In particular, directory-files is in a sense more primitive than > file-exists?, since the latter can be implemented (inefficiently) > in terms of the former.
As I'm currently reading a book on algorithmic information theory, I can't help but point out that given file-exists?, directory-files can be written to (in finite time!) find all files with finite names by just trying all possible strings into file-exists?... and if we know the maximum filename length for our OS, we can even terminate in finite time, having guaranteed to find all files ;-) > Technically you could define directory? as: > > (define (directory? x) (file-exists? (string-append x "/."))) > > (modulo separator concerns), but the point is well taken. > WG2 will include a full filesystem interface, and in WG1 we > have to decide if we want to cherry pick any functions, > include everything, or continue to be as useless as R5RS > in this respect. > One of the rationales in the first ballot pointed out that > just adding file-exists? and delete-file was silly. I agree... I voted to push the whole lot to WG2 (although I'm never quite sure, in practice, what the difference between "wg2" and "no" is; it's up to WG2 to make their own decisions as to what to include). I think we should ignore the filesystem (other than as a shadowy place that maps filenames to places where ports can go - which could just be a static list of special device names in an embedded system - but the structure of which is vague beyond that), or go the whole hog and specify a proper filesystem interface, like java's File class or CL's delightfully baroque pathname objects. >> A secondary problem, which may indeed be considered well out of scope >> for both WG1 and WG2 is that of: >> >> - (portably) determining a directory entry separator character with >> which to form a string to pass to open-directory (or directory- >> files or whatever) when wishing to descend into said directory Aye; my preference, rather than encouraging too much string arithmetic, is to provide functions to convert lists of strings to and from paths in the local convention (including mapping special relative-path conventions like ".", "..", and a leading "/" as appropriate). But let WG2 ponder on that. I'll be sure to follow their deliberations and bend John's ear with my opinions in due course, should I see them straying from the path of sanity ;-) ABS -- Alaric Snell-Pym http://www.snell-pym.org.uk/alaric/ _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
