The main problem is that the reader must parse the full value from the input. When you send "234234" to the pipe, the pipe contains 8 characters, and the last (second double quote) indicates readthat the value is complete. When you write 234234, the only thing in the pipe is the numbers, and the reader cannot determine if that number is complete. To see this, try the following:
(define-values (in out) (make-pipe))
(write 234234 out)
(write 111 out)
(display " " out)
(read in)
this calls the number 234234111.
source
share