Как прочитать строку ввода в Chez-Scheme?

Я не могу узнать, как это сделать. В предыдущих реализациях read-line был доступен, но по какой-то причине его нет в Chez.

Как мне просто прочитать строку ввода?

2 ответа

Решение

Chez Scheme - это реализация R6RS. Используйте R6RS get-line вместо R7RS read-line,

У меня есть читалка в моей стандартной прелюдии; он обрабатывает конец строки как возврат каретки, перевод строки или оба в любом порядке:

(define (read-line . port)
  (define (eat p c)
    (if (and (not (eof-object? (peek-char p)))
             (char=? (peek-char p) c))
        (read-char p)))
  (let ((p (if (null? port) (current-input-port) (car port))))
    (let loop ((c (read-char p)) (line '()))
      (cond ((eof-object? c) (if (null? line) c (list->string (reverse line))))
            ((char=? #\newline c) (eat p #\return) (list->string (reverse line)))
            ((char=? #\return c) (eat p #\newline) (list->string (reverse line)))
            (else (loop (read-char p) (cons c line)))))))
Другие вопросы по тегам