How do I read an input stream until EOF in Lisp?
In C, you might do it like this:
while ((c = getchar()) != EOF)
{
// Loop body...
}
The reason I am asking this is because I would like to be able to pipe data to my Lisp programs (I've just started learning) without having to specify the data size in advance.
Here's an example from something I'm doing now:
(dotimes (i *n*)
(setf *t* (parse-integer (read-line) :junk-allowed T))
(if (= (mod *t* *k*) 0) (incf *count*)))
In this loop, the variable n specifies the number of lines I'm piping to the program (the value is read from the first line of input) but I would like to just process an arbitrary and unknown number of lines, stopping when it reaches the end of the stream.