read-line
легко.Для переносимости через Unix и Windows требуется дополнительная опция.
(read-line (current-input-port) 'any)
Символы возврата и перевода строки обнаруживаются после преобразований, которые автоматически выполняются при чтении файла в текстовом режиме.Например, чтение файла в текстовом режиме в Windows автоматически меняет комбинации возврата и перевода строки на перевод строки.Таким образом, когда файл открывается в текстовом режиме, «перевод строки обычно является подходящим режимом чтения-строки.
Итак, любой должен быть переносимым, если порт ввода не является файлом (стандартныйinput).
Тестовая программа:
#lang racket
(let loop ()
(display "Input: ")
(define a (read-line (current-input-port) 'any))
(printf "input: ~a, length: ~a, last character: ~a\n"
a
(string-length a)
(char->integer (string-ref a (- (string-length a) 1))))
(loop))
В Windows замените (read-line (current-input-port) 'any)
на (read-line)
и посмотрите, что произойдет.