我会在前面:这是家庭作业。以下代码定义了一个函数countup
,称为:
(countup "file1")
似乎循环无限期地运行。为什么,我该如何解决这个问题?
(define stats
(lambda (srcf)
(begin
(define in (open-input-file srcf))
(let loop (
(l 0)
(w 0)
(c 0)
(char (read-char in)))
(case char
((#\newline)
(loop (+ l 1) w(+ c 1) (read-char in)))
((#\space #\tab)
(loop l (+ w 1) (+ c 1) (read-char in)))
(else (loop l w (+ c 1) (read-char in))))
)
(close-input-port in)
(display l)
(display " ")
(display w)
(display " ")
(display c)
(newline)
'()))
)
;; srcf = source text file
(define countup
(lambda (srcf lstf)
(stats srcf)
)
)
答案 0 :(得分:2)
从文件中读取字符的程序必须具备以下条件:
(cond ((eof-object? the-char)
'finished)
...)
看看这个answer,看一个与你正在编写的程序类似的程序,它可能会有所帮助。