6

私のネットワークは次のようになります。

ePhysics :: Event t ()
bPlayerForce :: Behavior t (Double,Double)
bPlayerPosition :: Behavior t (Double, Double)

ePhysicsタイマーから繰り返し発射されます。
の定義に問題がありますbPlayerPosition。私が意図しているのは、 で開始され、 が起動される(0,0)たびに、 をパラメーターとして使用して再計算されることです。ePhysicsbPlayerPositionbPlayerForce

問題は、初期値を指定するためにaccumB/を使用する必要があることですstepperが、それらはイベントでのみ機能し、bPlayerForceビヘイビアのみが他のビヘイビアの値を取得できるため ( を使用<*>)、力の値を取得できません。

代替手段は使用するだけ<*>ですが、それでは初期値がないため、無意味な無限再帰になります。

let bPlayerPosition = pure calcPosition <*> bPlayerForce <*> bPlayerPosition

3 つの質問があります。

  1. なしで動作から値を取得する方法はあり<*>ますか? reactimateたとえば、イベントを ing またはマッピングするときは? できないという問題は、最初から常に私を悩ませてきました。
  2. 物理を行うためのより機能的な/FRPの方法はありますか? (一般的に、および質問に固有のもの)
  3. 提示された問題をどのように解決できますか?
4

1 に答える 1