gpt4 book ai didi

clojure - 在clojure中查看部分数据是否懒惰

转载 作者:行者123 更新时间:2023-12-01 01:20:04 28 4
gpt4 key购买 nike

clojure 中是否有一个函数可以检查数据是否包含一些惰性部分?

背景:

我正在用 clojure 构建一个小型服务器。每个连接都有一个状态、一个输入流和一个输出流

服务器从输入流中读取一个字节,并根据该值调用几个函数之一(以状态以及输入和输出流作为参数)。这些函数可以决定从输入流中读取更多内容,将回复写入输出流,并返回一个状态。这部分循环。

只要状态不包含任何惰性部分,这一切都可以正常工作。如果状态中有一些惰性部分,那么当它被评估时(稍后,在另一个函数中),开始从输入流读取并写入输出流。

所以基本上我想为所有这些函数添加一个后置条件,声明返回状态的任何部分都可能是惰性的。是否有任何函数可以检查惰性序列。我认为检查状态本身是否是惰性序列很容易,但我想检查例如状态是否具有包含哈希映射的向量,其值之一是惰性的。

最佳答案

通过使用 doall 强制评估更容易确保它不是懒惰的

几年前,我在一个流处理加密应用程序中遇到了这个问题,并尝试了几种方法,直到我最终接受了我的懒惰的一面,并将输入流包装在一个惰性序列中,当没有更多数据可用时,该序列在输入流中关闭。有效地将关闭流的关注点与对流包含的内容的关注点分开。您正在跟踪的状态听起来比打开和关闭更复杂一些,尽管您可以用类似的方式将它分开。

关于clojure - 在clojure中查看部分数据是否懒惰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916303/

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