[gambit-list] I seem unable to grasp I/O...

Marc Feeley feeley at iro.umontreal.ca
Tue May 12 10:14:12 EDT 2009


On 11-May-09, at 11:51 PM, Brendan MacDonell wrote:

> On Mon, 11 May 2009, Marc Feeley wrote:
>
>> The procedure call-with-output-u8vector returns the u8vector that was
>> accumulated.
>
> This seems oddly inconsistent with call-with-input-vect and
> with-input-from-vect, both of which return the results of the  
> execution.
> In fact, the manual and wiki both list the output variants as  
> returning
> the values of their procedure or thunk, respectively, so it might be
> necessary to update the documentation.
>
> Brendan MacDonell


Just to be clear... the documentation is incorrect.  The behavior of  
call-with-output-string is consistent with many other Scheme  
implementations that have this extension (see below for a few).  If I  
remember correctly, Gambit inherited this behavior from MIT-Scheme  
some 20 years ago!

Marc

MIT/GNU Scheme 7.7.90.+:
1 ]=> (call-with-output-string (lambda (p) (write (cons 1 2) p) 123))
;Value 11: "(1 . 2)"

Chicken 3.4.0:
#;1> (call-with-output-string (lambda (p) (write (cons 1 2) p) 123))
"(1 . 2)"

STklos 0.82:
stklos> (call-with-output-string (lambda (p) (write (cons 1 2) p) 123))
"(1 . 2)"

Gauche 0.8.13:
gosh> (call-with-output-string (lambda (p) (write (cons 1 2) p) 123))
"(1 . 2)"

scsh 0.6.7:
 > (call-with-string-output-port (lambda (p) (write (cons 1 2) p) 123))
"(1 . 2)"

Bigloo 3.1b:
1:=> (string-append "foo:" (with-output-to-string (lambda () (write  
(cons 1 2)) 123)))
foo:(1 . 2)




More information about the Gambit-list mailing list