chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] with-*-*-port


From: Felix Winkelmann
Subject: Re: [Chicken-users] with-*-*-port
Date: Fri, 28 Feb 2003 17:26:42 +0100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530

Tony Garnock-Jones wrote:
(define with-input-from-port
 (let ((values values))
   (lambda (port thunk)
     (let ((old ##sys#standard-input))
       (##sys#dynamic-wind
        (lambda () (set! ##sys#standard-input port))
        thunk
        (lambda () (set! ##sys#standard-input old))) ) ) ) )


Perhaps this would be better capturing standard-input on each
transition, rather than just the first?

(Untested code follows)

(define with-input-from-port
  (let ((values values))
    (lambda (inner thunk)
      (let ((outer '*))
        (##sys#dynamic-wind
         (lambda ()
           (set! outer ##sys#standard-input)
           (set! ##sys#standard-input inner))
         thunk
         (lambda ()
           (set! inner ##sys#standard-input)
           (set! ##sys#standard-input outer)))))))

Does this make sense, or is it too paranoid?


It *is* paranoid, but it's the safest method.


cheers,
felix


--
address@hidden
http://www.proxima-mt.de





reply via email to

[Prev in Thread] Current Thread [Next in Thread]