問題タブ [frp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
635 参照

haskell - Yampa でのスプリング/ダンパー システムのシミュレーション

Simulink で行うように、いくつかの基本的なシステム シミュレーションに Yampa を使用しようとしています。この場合、この simulink チュートリアルで導入されたスプリングとダンパー システムをシミュレートしたいと考えています。システムを表すために、次の信号関数を作成しました。

関数は基本的なフィードバック ループfeedbackを作成し、次のように実装されます。

ああ、そして:

賢明な正の定数を使用すると、非常に不安定なシステムが得られます。

変位/時間のプロット

フィードバック ループを構築したり、統合を適用したりする方法に明らかに問題がありますか?

0 投票する
1 に答える
101 参照

javascript - 使わなくなったflapjax EventStreamsの対処法

ユーザーが指をタッチして数ピクセル動かすたびにイベントを発生させるイベント ストリームを作成したいと考えています。イベントには、ユーザーが移動した量による相対的な x と y の値が含まれている必要があります。次のコードはそれを正しく行います。

しかし、ロギングを追加して変更すると、次のようになります。

結果のイベントの最新の EventStream のみを選択する switchE メソッドによってドロップされたにもかかわらず、過去のすべての touchmove EventStreams が各 touchmove イベントで引き続き評価されることがわかります。これらは、怠惰評価のこの巨大なリークを回避する方法ですか?

0 投票する
2 に答える
509 参照

haskell - 矢印化された FRP の連続信号スイッチング

私は Haskell (特に Yampa) で Arrowized FRP ライブラリをいじっていますが、「継続的な」切り替えを行う方法がよくわかりません。sfつまり、信号は、それ自体が信号である信号関数 (以下) を通過することを意味します (画像の上半分に描かれているように)。

連続スイッチング

スイッチのパラメータがどうなるか前もってわからないので、これを単純なバイナリ スイッチに減らす方法がわかりません。

可能であれば、どのようにすればよいのでしょうか。私は Yampa コードの方が好きですが、Arrowized FRP コードであれば何でも構いません。これらの場合に同じ混乱が生じるかどうかを知るために、他のライブラリ(SodiumやReactive Bananaなど)を試したことはありませんが、それらについても興味があります.

編集

これをより明確にするために、画像にラベルを付けました。ラベルの可能なタイプは次のとおりです。

  • :Either Int (Int -> Int)

  • 1 : (Int -> Int) -> (Either Int (Int -> Int) -> (Int -> Int))

  • sf 次のようになります。

(Either Int (Int -> Int) -> (Int -> Int)) -> Either Int (Int -> Int) -> (Int -> Int)

(例: app)。ただし、それは疑問符の付いた部分が への入力を表している場合のみですsf。より複雑なスイッチを表す場合、タイプは次のようになります。

(Either Int (Int -> Int) -> (Int -> Int)) -> (Int -> Int)

代わりは。

  • 2outはほとんど無関係です。

に適用される関数を表すラベルの付いた信号を使用し、それ自体がsへの引数と s 自体の両方のソースであることで、回路がである のように動作するようにするという考えです。入力を処理し、それらの入力に基づいてその動作 (それを構成する信号関数) を動的に変更できる回路を取得したいと考えています。sfappfininff

一方では、この場合には;がないsfので、実際には ではないように思えます。しかし一方で、何らかの洗練された切り替えで同じ動作を実現できると思います。appArrowApply

0 投票する
1 に答える
321 参照

haskell - Qt の QStateMachine の機能的リアクティブ アナログ

QStateMachineフレームワークは、ステートフルなイベント ベースのアプリケーションを定義するための優れた宣言型の方法を提供します。つまり、イベントが発生すると、コールバックが実行され (実際にはシグナルが発生しますが、これでは十分ではありません)、グラフに従って状態遷移が実行されます。

私は実際に FRP を使用した経験はありませんが、reactive-banana の例を見ただけでは、FRP で同様の問題を解決できるかどうかわかりませんでした。たとえば、「2 つのカウンター」のサンプルは、単純なifaccumBによって状態を処理します。

FSA と FRP を融合するクリーンで宣言的な方法はありますか?

0 投票する
2 に答える
592 参照

vb.net - コントロールの値を決定する .NET が変更され、ファイナライズされました

すべてのコントロールは、値が変更されたことを示す何らかのイベントを提供します。たとえば、テキスト ボックスに入力し、各キーストロークで入力を開始すると、TextChangedイベントが発生します。コンボボックスを開いてドロップダウンで新しい項目を選択すると、SelectedIndexChangedイベントが発生します。

問題は、多くの場合、変更イベントが、中間の未完成の状態を表す一連の変更を通知することです。たとえば、ユーザーが郵便番号を入力している場合、ユーザーが入力を完了するまで、都市と州を検索したり、検証を試みたりする理由はありません。ユーザーが配送方法の組み合わせに焦点を合わせ、上/下キーを押して組み合わせの値をナビゲートし、希望するものを見つけようとする場合、配送方法が指定されていると想定して、それをに適用する理由はありません。請求書。配送方法が選択されたことを示すために値をページングした後、コンボボックスを終了するまで待つのが理にかなっているかもしれません。一連の暫定的な状態に煩わされたくありません。

私たちのショップではFinalized、ユーザーが手動で変更を開始したときにのみトリガーされるイベントを実装しました (DB から郵便番号を設定するようなプログラムによる変更とは対照的に)。このFinalizedイベントは、コントロールごとに異なる方法で処理する必要がありました。これを簡単に提供できる .NET 機能については知りません。

私が今持っている唯一のアイデアは、これに対応するためにRx (Functional Reactive Programming) のようなものを使用しようとすることです。これを容易にする単純な .NET アプローチのアイデアはありますか?

0 投票する
1 に答える
1223 参照

haskell - ゲームを実装するときにプッシュプルFRPは役立ちますか?

ゲームの実装において、プルのみの FRP (ネットワイヤ) とプッシュプル FRP (リアクティブ バナナ) を比較してきました。お互いに利点はありますか?私が気づいたことは次のとおりです。

  • プッシュ イベントにより、GLFW または GLUT からのマウス クリック/キー プレスのイベントを簡単に作成できます。
  • netwire が使用する矢印化された FRP はIO、浮遊がはるかに少なく、常に優れています。
  • マウスの動きなどに対してプルのみの応答を行うと、タイム リークが発生する可能性があるようです。

私は他に何を逃しましたか?

編集して、これを意見に基づかないようにします。主な目標は、時間の漏れなく、できるだけ表現力豊かで簡潔なものにすることです。

更新:私が Netwire で見つけた大きな問題は、記事「Fix your Timestep」で説明されているように、複数のフレームレートを使用する便利な方法がないように思われることです。

更新 2:これを回避する方法は、ゲーム シミュレーション ワイヤFloat -> IO ()がアルファ値を取得し、そのアルファによって補間されたすべてのものですべての GL 呼び出しを実行する a を返すようにすることです。理想的には、この「描画関数」を を介して別のスレッドに渡しMVar、そのスレッドで実行できるようにする必要があります。男、Haskellは素晴らしいです。

更新 3:この質問をしてから 6 か月間で、Netwire と「エンティティ コンポーネント プログラミング」の概念に基づく単純なレンダリング エンジンを開発しました。このプロセスでは、FRP の使用が非常に役立つとは思いませんでした。sの表現力は、Wire実際には状況によっては妨げになることがわかっています。問題は、オブジェクトの「アイデンティティ」に集中しています。の値を定義するときWireつまり、ネットワーク全体で複数回再利用され、毎回異なる物理的なものを表す可能性があります。衝突検出のようなことをしたいが、シーン グラフをトラバースする方法がない場合、これは非常に苦痛です。シーン グラフは単一の不透明なワイヤに融合されなければ存在できないからです。この問題は、「おもちゃ」の例では発生しません。これは、どのオブジェクトのどのプロパティが他のどのオブジェクトとどのように相互作用するかを正確に指定するのは簡単だからです。これはどちらのFRPにも問題があると思います。

Haskell のウィザードがこれについて私が間違っていることを証明してくれたら最高ですが、実際にはそれを回避する方法がわかりません。また、説明が下手で申し訳ありませんが、自分で試してみないと簡単には理解できません。

0 投票する
5 に答える
7826 参照

asynchronous - core.async と Functional Reactive Programming (+Rx) の比較

Clojure のcore.asyncをいわゆるReactive Extensions (Rx) やFRP全般と比較すると、少し混乱しているようです。彼らは非同期性という同様の問題に取り組んでいるように見えるので、主な違いは何なのか、どのような場合にどちらが優先されるのか疑問に思います。誰か説明してくれませんか?

編集:より詳細な回答を促すために、質問をより具体的にしたいと思います:

  1. Core.async を使用すると、同期のように見えるコードを記述できます。ただし、私が理解しているように、FRP は 1 レベルのネストされたコールバックしか必要としません (ロジックを処理するすべての関数は引数として FRP API に渡されます)。これは、両方のアプローチがコールバックピラミッドを不要にしているようです。function() {...}JS では何度も書かなければならないのは事実ですが、FRP ではネストされたコールバックという主な問題も解消されています。私はそれを正しく理解していますか?

  2. FRPはメッセージの伝達を制御の流れで完結させます」 どなたか具体的に説明していただけますか?

  3. チャネルを渡すのと同じ方法で、FRP の監視可能なエンドポイントを渡すことはできませんか?

一般に、両方のアプローチが歴史的にどこから来たのかを理解しており、両方のチュートリアルをほとんど試していません。しかし、私は違いの非自明性によって「麻痺」しているようです。これらのいずれかで書くのが難しく、他のコードを使用すると簡単なコードの例はありますか? そして、そのアーキテクチャ上の理由は何ですか?

0 投票する
2 に答える
301 参照

haskell - プレーヤーをジャンプさせる方法 (y 速度を設定)?

以下を考えると:

ジャンプイベントが到着したときにプレイヤーをジャンプさせるにはどうすればよいですか (おそらく y 速度を設定することによって)。

0 投票する
2 に答える
210 参照

haskell - 可能ですか?: 振る舞い t [振る舞い ta] -> 振る舞い t [a]

Behavior t [a]時間 t での [a] の値が時間 t での a に含まれる値であるa を持つ方法はありBehavior t [Behavior t a]ますか? つまり、次のタイプの関数:

これが不可能な場合、それは論理的な不可能性またはリアクティブ バナナの制限によるものですか?

0 投票する
2 に答える
394 参照

haskell - FRPにおける「今の行動」

以前の SO の質問 ( Is it possible?: Behavior t [Behavior ta] -> Behavior t [a] ) では、(用語Behavior joinを使用するために) a の存在を分析していました。reactive-banana

次のようにセマンティック モデルに実装されます。

これを直接実装するのは残念ですが、Behavior Monad使用してconstandを生成できるため、 FRP のセマンティクスに違反するbehaviorNow場合、およびどのように違反しますか?behaviorNow

他の FRP システムの用語を使用した回答と、意味がある場合の比較を聞きたいです。