guile 1.8 또는 guile 2를 사용하여 다음 코드는 EOF를 읽습니다. 이것이 추출물 인 더 큰 프로그램에서 이것이 갖는 효과는 이전에 읽은 데이터를 겉으로보기에는 손상시키는 것입니다. read-line을 사용하고 있거나 eof-object를 잘못 테스트하고 있습니까?Guile Scheme read-reading from EOF
1
2
3
# comment line
4
5
1
2
3
# comment line
4
5
1
2
3
# comment line
4
5
그것은 명시하는 문제에 대한 긴 몇 줄보다 더 할 필요가 : 여기
(use-modules (ice-9 rdelim))
(define f
(lambda (p)
(let loop ((line (read-line p)))
(format #t "line: ~a\n" line)
(if (not (eof-object? (peek-char p)))
(begin
(let ((m (string-match "^[ \t]*#" line)))
(if m
(begin
(format #t "comment: ~a\n" (match:string m))
(loop (read-line p))
)))
(format #t "read next line\n")
(loop (read-line p)))))))
(define main
(lambda()
(let ((h (open-input-file "test")))
(f h))))
는 최소한의 샘플 더미 입력 파일입니다. 코드 예제의 길이는 사과하지만이 문제는 코드가 복잡해지면 발생합니다 (작지만).
주요 문제는 그 사실 것 같다을 의견을 찾으면 반복마다 _ 두 줄을 읽습니다. 솔루션을 구성하는 다른 방법에 대한 내 대답을 확인하십시오. –