【发布时间】:2016-11-27 08:42:57
【问题描述】:
我的具体问题是这样的:
给定一个Event t [a] 和一个Event t ()(假设它是一个滴答事件),我想生成一个Event t a,也就是说,一个事件会在每次发生滴答时为我提供输入列表中的连续项目事件。
Reflex 有以下助手:
zipListWithEvent :: (Reflex t, MonadHold t m, MonadFix m) => (a -> b -> c) -> [a] -> Event t b -> m (Event t c)
这正是我想要的,但不将事件作为输入,而只是一个列表。鉴于我有一个Event t [a],我想我可以产生一个包含事件的事件并只是切换,但问题是zipListWithEven 在单子上下文中运行,因此我可以得到:
Event t (m (Event t a))
这是switch 原语不接受的东西。
现在,也许我以错误的方式接近它,所以这是我的一般问题。给定一个生成坐标列表和刻度事件的事件,我想生成一个可以“使用”沿坐标移动对象的事件。因此,每次触发滴答声时,都会更新位置。每次我更新坐标列表时,它都会开始从该新列表中生成位置。
【问题讨论】: