The pipe procedure takes no arguments and returns a list of two ports: the first port is an input port and the second is an output port. Data written to the output port is read from the input port.