Marc Feeley feeley@iro.umontreal.ca writes:
On 24-Apr-08, at 12:24 PM, Joel J. Adamson wrote:
Marc Feeley feeley@iro.umontreal.ca writes:
On 24-Apr-08, at 10:47 AM, Joel J. Adamson wrote:
How the heck do I use read-line in a program?
[...]
and I always just end up redefining read-line:
(define (read-this)
(let ((input (read-char)) (output "")) (if (char=? input #\newline) output (string-append (string input) (read-this)))))
(read-this)
""
(read-this)this is text, baby
"this is text, baby"
I'm really not getting this; can someone please explain it to me?
I don't understand the problem you are having! Your read-this is behaving exactly like read-line !
I think I now understand your problem... you want to flush the input buffers so that the call to read-line will return only what was typed by the user after the moment of the call. So here's one way to do it:
(define (flush-input port) (input-port-timeout-set! port 0.001) (let loop () (if (not (eof-object? (read-line port))) (loop))) (input-port-timeout-set! port +inf.0))
I see; it had not occurred to me to directly stall the port. On top of that...
(define (read-line-from-console) (let ((port (console-port))) (flush-input port) (read-line port)))
I was unaware of console-port! I was trying to find if there was a "stdin-port" or "tty-port;" I guess (console-port) should have been my next guess.
(pp (read-line-from-console))
Excellent, that is exactly what I was going for.
Thank you! Joel