我正在尝试实现一个stream->文件函数,该函数接受一个字符流并将其打印到文件中。我觉得我接近一个解决方案,但无法弄清楚如何完成这个。
(define stream->file
(lambda (filename str)
(let ((output (open-output-file filename)))
(letrec
((build-output-stream
(lambda (str)
(let ((char (write-char (stream-first str) output)))
(if (eof-object? char)
(begin
(close-output-port output)
empty-stream)
(stream-cons char (build-output-stream (stream-rest str))))))))
(build-output-stream str)))))
除了在输出中说#<stream>
之外,这不做任何其他事情。它会创建一个文件,但不会写入文件。我错过了什么?