比方說,我有過濾重複的事件
x :: Event t (A,B)
我能得到它的第一個組件:
fst <$> x :: Event t A
然而,當第一個組件沒有按」這一事件甚至會火改變。我想避免這種情況,因爲這會引發昂貴的重新計算。
A
是Eq
一個實例,因此我希望能夠去除連續的比賽時相比,它的最後一個值的第一部分是沒有改變。
理想情況下,我想一個函數
filterDups :: Eq a => Event t a -> Event t a
這將做到這一點,而不訴諸Moment
單子。可能嗎?或者什麼是最好的方式來做到這一點?
這個實現是在精神上是正確的,但在事件同時包含事件發生了微妙的問題。該行爲只會記住同時發生的最後一個值,而不會記錄中間的值。一個完全正確的實現將在這裏使用'accumE'。然而,未來版本的反應型香蕉將完全擺脫同時發生的事件,因此這裏的定義再次變得正確。 –
感謝您的澄清,這是我第一次使用反應香蕉,我不確定這種解決方案是否適用於所有情況。 –