gpt4 book ai didi

haskell - 如何在 Helm 中合并信号?

转载 作者:行者123 更新时间:2023-12-02 16:57:04 25 4
gpt4 key购买 nike

我正在使用 Helm 开展一个项目,它基于 Elm 语言。

我需要根据一对信号中哪个信号首先到达来触发一个事件。在 Elm 中,我会使用 merge函数,但我在 Helm 中找不到等效的函数。我看到的最接近的是组合(在信号库中),它似乎没有达到我想要的效果。看来combine只是接受一个信号列表并将它们直接变成一个列表信号,这并不是我想要的。

编辑:具体来说,我正在寻找一个带有签名 Signal a -> Signal a -> Signal a 的函数,它需要第一个信号来触发并丢弃第二个信号。

在 Helm 中实现此目的的最佳方法是什么?

最佳答案

我认为最好的方法是找出 Helm 的 Signal 是如何用 Elerea 的东西实现的,并用那些更原始的术语实现 merge 。恐怕我帮不了你,因为我不太了解 Helm,也根本不了解 Elerea。

可以帮助您提供仅基于 Helm 的黑客解决方案。您可以使用 timestamp 来区分不同的事件和压缩信号:

merge sigL sigR =
let
tsMerge (t1,v1) (t2,v2) =
if t1 >= t2
then v1
else v2
in
tsMerge <~ timestamp sigL ~~ timestamp sigR

关于haskell - 如何在 Helm 中合并信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30553388/

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