scsh-users
[Top] [All Lists]

Re: Code critique requested

To: Scheming Bugger <scheming_bugger@yahoo.com>
Subject: Re: Code critique requested
From: RT Happe <rthappe@mathematik.uni-freiburg.de>
Date: Fri, 9 Aug 2002 18:55:06 +0200 (CEST)
Cc: <scsh-news@zurich.ai.mit.edu>
On Fri, 9 Aug 2002, Michael Sperber [Mr.  Preprocessor] wrote:
> >>>>> "SB" == Scheming Bugger <scheming_bugger@yahoo.com> writes:

> SB>      My primary question here, in addition to any style issues, is
> SB> whether or not I should be concerned about the use of set!.  Is set!
> SB> an indication that I should be looking harder for a solution that
> SB> doesn't have side-effects?
>
> Probably not in this case: that part of the code looks fine.

The SET! doesn't obfuscate the intent here, but on the other hand there's
a more convenient solution without assignments:

(define (count-recent-files base-dir since-time)
  (if (and (file-exists? base-dir)
           (file-directory? base-dir))
      (with-cwd base-dir
        (fold (lambda (file count)
                (cond ((file-directory? file)
                       (+ count (count-recent-files file since-time)))
                      ((< since-time (file-last-mod file))
                       (+ 1 count))
                      (else count)))
              0
              (directory-files)))))

I'd say that's a rather typical application of srfi-1's FOLD (built into
scsh).  Another option would have been a named loop

  (let loop ((count 0) (files (directory-files))) ...)

but explicit recursion isn't that great either.

rthappe



<Prev in Thread] Current Thread [Next in Thread>