Mas*_*tic 6 recursion haskell frp reactive-programming reactive-banana
我的网络看起来像这样:
ePhysics :: Event t ()
bPlayerForce :: Behavior t (Double,Double)
bPlayerPosition :: Behavior t (Double, Double)
Run Code Online (Sandbox Code Playgroud)
ePhysics从计时器反复触发.
我在定义方面遇到了问题bPlayerPosition.我打算将它作为一个参数重新计算,它将在(0,0)什么时候ePhysics被触发.bPlayerPositionbPlayerForce
问题是,按顺序来指定一个初始值,我需要使用accumB/ stepper,但他们只使用这些事件,我不能得到力值bPlayerForce,因为只有行为可以得到其他行为(具有的价值<*>).
替代方案只是使用<*>但是我没有初始值,所以它变成了无意义的无限递归:
let bPlayerPosition = pure calcPosition <*> bPlayerForce <*> bPlayerPosition
Run Code Online (Sandbox Code Playgroud)
我有3个问题:
<*>?喜欢,在进行reactimate或映射事件时?从一开始就不能一直与我联系的问题.apply组合子,也叫<@>,它的变异<@提供了一种方法,每当事件发生采样行为.ePhysics事件给出的离散时间步长求和来近似积分.有点像
let bPlayerPosition = stepper (0,0) $
(calcPosition <*> bPlayerForce <*> bPlayerPosition) <@ ePhysics
Run Code Online (Sandbox Code Playgroud)