From 7523be44de09413fb9f13758d4127ac2e06cabb7 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Sat, 27 May 2006 15:26:24 +0000 Subject: [PATCH] removed bogus type lines, made find-files reverse its result so directories precede files which is usually desirable svn: r3087 --- collects/mzlib/file.ss | 49 ++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/collects/mzlib/file.ss b/collects/mzlib/file.ss index cfeb0250f6..88f13e4a90 100644 --- a/collects/mzlib/file.ss +++ b/collects/mzlib/file.ss @@ -473,38 +473,27 @@ (define fold-files (opt-lambda (f init [path #f] [follow-links? #t]) - ;; traverse-dir : string[directory] (listof string[file/directory]) -> (listof string[file/directory]) (define (traverse-dir dir base acc) - (let loop ([subs (directory-list dir)] - [acc acc]) - (cond - [(null? subs) acc] - [else (loop (cdr subs) - (let ([path (if base - (build-path base (car subs)) - (car subs))]) - (traverse-file/dir path path acc)))]))) + (let loop ([subs (directory-list dir)] [acc acc]) + (cond [(null? subs) acc] + [else (loop (cdr subs) + (let ([path (if base + (build-path base (car subs)) + (car subs))]) + (traverse-file/dir path path acc)))]))) - ;; traverse-file/dir : string[file/directory] (listof string[file/directory]) -> (listof string[file/directory]) (define (traverse-file/dir file/dir base acc) - (cond - [(and (not follow-links?) (link-exists? file/dir)) - (f file/dir 'link acc)] - [(directory-exists? file/dir) - (traverse-dir file/dir base (if base - (f file/dir 'dir acc) - acc))] - [else (f file/dir 'file acc)])) - - (traverse-file/dir (or path (current-directory)) - path - init))) + (cond [(and (not follow-links?) (link-exists? file/dir)) + (f file/dir 'link acc)] + [(directory-exists? file/dir) + (traverse-dir file/dir base (if base (f file/dir 'dir acc) acc))] + [else (f file/dir 'file acc)])) - (define find-files + (traverse-file/dir (or path (current-directory)) path init))) + + (define find-files (opt-lambda (f [path #f]) - (fold-files (lambda (path kind acc) - (if (f path) - (cons path acc) - acc)) - null - path)))) + (reverse! (fold-files (lambda (path kind acc) + (if (f path) (cons path acc) acc)) + null + path)))))