Обнаружение EOF в двоичном файле с использованием схемы

(define (read-all-input)
  (local ((define line (bytes->list (read-bytes 4))))
    (if (eof-object? line)
        empty
        (cons line (read-all-input)))))

(void (read-all-input))

Приведенный выше код не работает, потому что список байтов->список ожидает аргумент типа байтовая строка, но дан #


person yuguang    schedule 20.10.2009    source источник


Ответы (2)


#lang scheme

(define (read-all-input)
 (let ((b (read-bytes 4)))
  (cond
   ((eof-object? b) empty)
   (else (cons b (read-all-input)))
)))

(void (read-all-input))

Эта функция считывает байты в список байтов.

person yuguang    schedule 20.10.2009

Я не совсем уверен, что вы хотите получить, но вот моя попытка:

(define read-all-input
  (lambda ()
      (let ((line (read-bytes 4)))
        (if (eof-object? line)
            '()
            (cons (bytes->list line) (read-all-input))))))
person Ionuț G. Stan    schedule 20.10.2009