我想逐个元素地读取stdin,但是当我插入一个新行时我不知道如何停止。 这是我的代码:
(define readNext
(lambda (tmp)
(let ([a (read)])
(if (equal? a ??????)
tmp
(readNext (cons (read) tmp))))))
答案 0 :(得分:0)
我找到了一个符合我预期的解决方案。
(define a (open-input-string (read-line)))
(define readNext
(lambda (tmp)
(let ([b (read a)])
(if (equal? b eof)
tmp
(readNext (append tmp (list b)))))))
(readNext '())
编辑:它不会停留在newline
上,而是eof
答案 1 :(得分:0)
函数read
将读取整个数据。
如果你想读取字符,直到你打到换行符,
你一次只能有一个角色。
换行符写为#\newline
。
这样的事情:
#lang racket
(define read-a-line-as-list
(lambda ()
(let ([c (read-char)])
(if (equal? c #\newline)
'()
(cons c (read-a-line-as-list))))))
(define read-a-line
(lambda ()
(list->string (read-a-line-as-list))))
(read-a-line)
答案 2 :(得分:0)
我这样做
compileSdkVersion
可能不是最惯用的,但它有效。使用(for ((_ (in-naturals)))
(define l (read-line))
#:break (eof-object? l)
(displayln l))
或类似内容对正在读取的行执行更有用的操作。