gpt4 book ai didi

scheme - Racket 方案 - 将字符流写入文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:34 24 4
gpt4 key购买 nike

我正在尝试实现一个 stream->file 函数,它接受一个字符流并将其打印到一个文件中。我觉得我接近解决方案,但无法弄清楚如何完成它。

(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> 什么都不做在输出中。它创建一个文件,但不写入它。我错过了什么?

最佳答案

我发现您的代码过于复杂。您需要在流中写入每个元素,因为这是纯粹的副作用,您不妨使用 stream-for-each。与其进行文件端口处理,不如使用 with-output-to-file 更容易,因为它会在 thunk 完成时关闭端口。这是结果:

(define (stream->file file-path stream)
(with-output-to-file file-path
(thunk (stream-for-each display stream))))

(stream->file "test-stream.txt" (stream #\t #\e #\s #\t #\newline))
; undefined, makes a file named "test-stream.txt" with the content "test\n"

关于scheme - Racket 方案 - 将字符流写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40969136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com