Scheme中的文件统计信息

时间:2013-04-17 15:12:18

标签: file-io scheme

我会在前面:这是家庭作业。以下代码定义了一个函数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)
  )
)

1 个答案:

答案 0 :(得分:2)

从文件中读取字符的程序必须具备以下条件:

(cond ((eof-object? the-char)
       'finished)
      ...)

看看这个answer,看一个与你正在编写的程序类似的程序,它可能会有所帮助。