Haskell 哈斯克尔单向`杜普钦`

Haskell 哈斯克尔单向`杜普钦`,haskell,stm,variations,Haskell,Stm,Variations,有没有类似的功能。 但当你这样做时: newChan = dupTChanOneWay oldChan 任何写入oldChan的内容都会写入newChan,但反过来就不行了?实际上,我认为这在没有路由线程的情况下是可能的。这并不完全是所要求的数据结构——一个实际的TChan——但它确实产生了一个结构,您可以从“两个源”中读取,但可以专门写入 这个概念很简单。只需重复你最初的TChan。现在,还要创建一个全新的TChan。现在,您可以从dup'd chanorElse读取新的chan——这将为您

有没有类似的功能。 但当你这样做时:

newChan = dupTChanOneWay oldChan

任何写入
oldChan
的内容都会写入
newChan
,但反过来就不行了?

实际上,我认为这在没有路由线程的情况下是可能的。这并不完全是所要求的数据结构——一个实际的TChan——但它确实产生了一个结构,您可以从“两个源”中读取,但可以专门写入


这个概念很简单。只需重复你最初的TChan。现在,还要创建一个全新的TChan。现在,您可以从dup'd chan
orElse
读取新的chan——这将为您提供一个“输出”通道,有效地合并两个输入通道。现在,写入初始通道会同时写入这两个通道,写入新通道会以独占方式写入新合并的“通道”。

您可以有两个通道和一个执行路由的线程。出于某种原因,这是不能接受的吗?事实上,我刚开始这么做。我只是想知道是否有更优雅的方式。这是一个有趣的问题。经过一番思考后,我认为这不能用
TChan
s来实现,因为它们目前是结构化的。但是,您可以使用此附加功能在自己的模块中定义自己的
TChan
类类型和操作-如果您感兴趣,这应该不会太难。@ThomasM.DuBuisson--因为我认为这是这个问题将得到的最佳答案集,也许你可以把它们作为一个真正的答案,从未回答的问题中排除出来?