File io Scheme中的文件统计信息

File io Scheme中的文件统计信息,file-io,scheme,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-ch

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

从文件中读取字符的程序必须在某个地方具有以下条件:

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

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

语言本身并不难。。。“在计划中思考”很难。从功能上考虑。你需要检查文件的结尾。@RobertHarvey:不难,只是不同:)你使用的是什么方案实现?9.0.1版微码15.1版运行时15.7版SF 4.41版LIAR/x86-64 4.118版Edwin 3.116