2

これを行う方法がわかりません。以前の実装read-lineでは利用可能でしたが、何らかの理由で Chez にはありません。

入力行を読み取るにはどうすればよいですか?

4

2 に答える 2

3

Chez Scheme は R6RS の実装です。get-lineR7RS の代わりにR6RS を使用してくださいread-line

于 2017-04-07T20:04:42.840 に答える
2

Standard Prelude に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)))))))
于 2016-06-16T12:48:46.873 に答える