Hi, As I explained on the Chibi list, this is not technically a bug:
The specification of with-input-from-file (in R5RS and R7RS) states: If an escape procedure is used to escape from the continuation of these procedures, their behavior is implementation dependent. Hence Chibi (and Chicken) get confused because they implement it without dynamic-wind, and when you jump out current-input-port is still bound to /etc/motd, where it tries to continue the repl from. Although this is not a violation of the standard, I've updated Chibi to use dynamic-wind and do the right thing here. -- Alex On Tue, Dec 20, 2011 at 12:40 AM, <obscurolocon...@googlemail.com> wrote: > I tried the following: > > (define (ignore . args) > (if #f #f)) > > (define (x) > (call-with-current-continuation > (lambda (return) > (with-input-from-file "/etc/motd" > (lambda () > (return (ignore))))))) > > (ignore (x)) > > This maks csi reading the contents of /etc/motd as source input: > > $ csi > > CHICKEN > (c)2008-2011 The Chicken Team > (c)2000-2007 Felix L. Winkelmann > Version 4.7.0.3-st > linux-unix-gnu-x86 [ manyargs dload ptables ] > compiled 2011-12-09 on x (Linux) > > #;1> (define (ignore . args) > (if #f #f)) > #;2> (define (x) > (call-with-current-continuation > (lambda (return) > (with-input-from-file "/etc/motd" > (lambda () > (return (ignore))))))) > #;3> (ignore (x)) > > Error: unbound variable: > ------------------------------------------------------------------------------------------ > > Error: unbound variable: Red > > Error: unbound variable: Hat > > Error: unbound variable: Enterprise > > Error: unbound variable: Linux > > Error: unbound variable: Client > > Error: unbound variable: release > 5.5 > > _______________________________________________ > Chicken-users mailing list > Chicken-users@nongnu.org > https://lists.nongnu.org/mailman/listinfo/chicken-users _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users