R6RSの open-string-output-port を Gauche で書くと

(define (open-string-output-port)
  (let* ([port (open-output-string)]
         [proc (lambda () (let1 s (get-output-string port)
                            (port-seek port 0)
                            s))])
    (values port proc)))

こんな感じ?