A Racket pipe is internal to Racket, and not related to OS-level pipes (which are file-stream ports) for communicating between different processes.
|(make-pipe [limit input-name output-name])|
|limit : exact-positive-integer? = #f|
|input-name : any/c = 'pipe|
|output-name : any/c = 'pipe|
If limit is #f, the new pipe holds an unlimited number of unread bytes (i.e., limited only by the available memory). If limit is a positive number, then the pipe will hold at most limit unread/unpeeked bytes; writing to the pipe’s output port thereafter will block until a read or peek from the input port makes more space available. (Peeks effectively extend the port’s capacity until the peeked bytes are read.)
The optional input-name and output-name are used as the names for the returned input and out ports, respectively.