私のネットワークは次のようになります。
ePhysics :: Event t ()
bPlayerForce :: Behavior t (Double,Double)
bPlayerPosition :: Behavior t (Double, Double)
ePhysics
タイマーから繰り返し発射されます。
の定義に問題がありますbPlayerPosition
。私が意図しているのは、 で開始され、 が起動される(0,0)
たびに、 をパラメーターとして使用して再計算されることです。ePhysics
bPlayerPosition
bPlayerForce
問題は、初期値を指定するためにaccumB
/を使用する必要があることですstepper
が、それらはイベントでのみ機能し、bPlayerForce
ビヘイビアのみが他のビヘイビアの値を取得できるため ( を使用<*>
)、力の値を取得できません。
代替手段は使用するだけ<*>
ですが、それでは初期値がないため、無意味な無限再帰になります。
let bPlayerPosition = pure calcPosition <*> bPlayerForce <*> bPlayerPosition
3 つの質問があります。
- なしで動作から値を取得する方法はあり
<*>
ますか?reactimate
たとえば、イベントを ing またはマッピングするときは? できないという問題は、最初から常に私を悩ませてきました。 - 物理を行うためのより機能的な/FRPの方法はありますか? (一般的に、および質問に固有のもの)
- 提示された問題をどのように解決できますか?