gpt4 book ai didi

haskell - 过滤reactive-banana中的重复事件

转载 作者:行者123 更新时间:2023-12-02 16:37:42 24 4
gpt4 key购买 nike

假设我有

x :: Event t (A,B)

我可以获得它的第一个组件:

fst <$> x :: Event t A

但是,即使第一个组件没有更改,此事件也会触发。我想避免这种情况,因为它会触发昂贵的重新计算。

AEq 的实例,因此我希望能够删除第一个组件与其最后一个值相比没有更改的连续事件。

理想情况下,我想要一个函数

filterDups :: Eq a => Event t a -> Event t a

无需借助 Moment monad 即可实现此目的。是否可以?或者说最好的方法是什么?

最佳答案

您必须记住有关事件历史的信息才能做您想做的事情。正如其他答案已经提到的,您可以使用 AccumE 来实现此目的。 Here简洁的定义:

unique :: Eq a => Event t a -> Event t a
unique = filterJust . accumE Nothing
. fmap (\a acc -> if Just a == acc then Nothing else Just a)

关于haskell - 过滤reactive-banana中的重复事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320169/

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