[racket] testing impure stuff

From: Manfred Lotz (manfred.lotz at arcor.de)
Date: Mon Dec 23 16:09:37 EST 2013

I had a look into collects/racket/private/for.rkt where in-directory is
defined.

I have to admit that I don't understand much of the stuff as this is a
level of Racket I haven't yet mastered.

Nevertheless, there is 
       (when (directory-exists? fp)
          (loop fp p)))))

Here it should be checked if there is permission to read fp. Not quite
sure what is the best way to handle it. Issue an error message and
continue, or let the issuer of in-directory decide what to do. 

In my case I copied the stuff into my own source, renamed it, checked
permissions and issue a message if there is no permission to read and
continue. Seems to be the solution for me for the time being.



-- 
Manfred



On Mon, 23 Dec 2013 15:20:32 -0500
Matthias Felleisen <matthias at ccs.neu.edu>
wrote:

> 
> For that, you will need to wrap the whole loop because
> (in-directory ...) fails, and no, I don't know how to resume this
> optimized loop: 
> 
> #lang racket ;; foo.rkt 
> 
> (define start-dir ".")
> 
> ;;
> (with-handlers (((lambda (x) #t) (lambda (e) (log-warning
> "in-directory failed")))) (for ([f (in-directory start-dir)] #:when
> (regexp-match #rx"\\.rkt" f)) (with-handlers ((exn:fail:contract?
> (lambda (e) (log-warning (exn-message e)))) (exn? displayln))
>       (displayln (path->string f)))))
> 
> 
> 
> On Dec 23, 2013, at 3:06 PM, Manfred Lotz
> <manfred.lotz at arcor.de> wrote:
> 
> > #lang racket ;; foo.rkt 
> > 
> > (define start-dir "/tmp/testdir")
> > 
> > (for ([f (in-directory start-dir)] #:when (regexp-match #rx"\\.rkt"
> > f)) (with-handlers ((exn:fail:contract? (lambda (e) (log-warning
> >            (exn-message e))))) 
> >  (displayln (path->string f))))
> 
> 
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users
> 




Posted on the users mailing list.