gpt4 book ai didi

haskell - 非确定性交错管道的来源

转载 作者:行者123 更新时间:2023-12-04 17:53:53 24 4
gpt4 key购买 nike

我希望看到一个非确定性的源交织操作,具有类似的类型签名

interleave :: WhateverIOMonadClassItWouldWant m => [(k, Source m a)] -> Source m (k, a)

用例是我有一个 p2p 应用程序,它维护与网络上许多节点的开放连接,并且它主要只是坐在那里等待来自其中任何一个节点的消息。当消息到达时,它并不关心它来自哪里,而是需要尽快处理该消息。理论上这种应用程序(至少当用于类似套接字的源时)可以完全绕过 GHC 的 IO 管理器并运行 select/ epoll/等等。直接调用,但我并不特别关心它是如何实现的,只要它有效。

导管可以做到这样的事情吗?一个不太通用但可能更可行的方法可能是写一个 [(k, Socket)] -> Source m (k, ByteString)为您处理所有套接字上的接收的函数。

我注意到 ResumableSource管道中的操作,但他们似乎都想知道一个特定的 Sink ,这感觉有点抽象泄漏,至少对于这个操作。

最佳答案

stm-conduit 包提供了 mergeSources它执行的操作与您要查找的内容相似(尽管不完全相同)。这可能是一个很好的起点。

关于haskell - 非确定性交错管道的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11481740/

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