問題タブ [reactive-banana]

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 投票する
0 に答える
511 参照

haskell - Gtk2Hs でリアクティブ バナナを使用するには?

反応バナナの経験を積もうとしています。そのウェブサイトによれば、GTKをサポートする必要があります。それを行う方法に関するチュートリアル/入門資料があるかどうか疑問に思っていましたか?

SO で jaek プロジェクトがあることを読みましたが、FRP や反応性バナナの経験がないため、gtk2hs (hackage の gtk3) で反応性バナナを使用するための最小限の例をもっと探しています。

また、reactive-banana-wx が Windows/MinGW で動作するように何度も試みました。最終的に wxHaskell をインストールすることはできましたが、事前に実行時エラーが発生しました ( https://stackoverflow.com/questions/23367950/wxc-segfault-in-wxhaskell )。wxHaskell を Windows で動作させる方法についてのその後の指示はなく、質問だけだったので、すべてを 2010 以前にダウングレードしない限り、wxHaskell を適切に動作させることはできなかったと思います。

今日はGtk2Hsをインストールしてみました。gtk3 でも簡単でした。このルートに初心者向けの優れた資料があるかどうか疑問に思います (つまり、reactive-banana + gtk2Hs)。

ありがとう、

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

haskell - 反応バナナGLFWイベント登録例

関連するスレッドでは、修正が容易であると思われる準コードの例が示されています。

ここまで直せませんでした。キーイベントを登録する機能コードのスニペットを誰か提供できますか?

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

haskell - リアクティブバナナで現在時刻を扱う

反応バナナで現在の時刻をどのように処理しますか?

理想的にはBehaviour、現在の時刻を取得するために「ポーリング」できる が必要です。Behaviourただし、 s をEvent(経由<@などで)ポーリングすると、現在の値ではなくBehaviour以前 Eventの の値が得られます。(これは、実際に有用な循環定義を避けるためだと認識しています。)

fromPoll役立つと思ったもの を見つけました。Behaviourから観察される s はfromPoll、それ自体に依存することはできないため、前の発火の直後ではなく、これが発火する直前の動作を観察することによってサイクルを導入することはできません。EventEvent

余談

より形式的な言い方をすれば、 s は常に時刻t+Event発生し、常に時刻t-に観察される、つまり、それらの直前に発生する非常に短い時間に発生する動作を観察することを示唆しています。および友人によって生成された s の新しい値は、常に時刻 t+ から開始されるため、時刻t+も発生する s によって観測できませんでした。BehavioursEventBehaviouraccumBEvent

この提案されたセマンティクスの下では、Behaviourによって作成された s は、それぞれが処理fromPollされる直前に更新されます。EventBehaviourの は、友人によって作成されているため、後で更新されaccumBます。

私のユースケース

とにかく、それは私の主な質問に対する重大な余談です。反応バナナで現在の時刻 ( の時刻ではなく)を処理する方法があるかどうかを知りたいです。Event私の使用例は、たとえば、エンティティが送信する ping を追跡し、それらのいずれかが特定の時間間隔で ping を送信していない場合に警告イベントを通知することです。

もちろん、私は非常に頻繁にイベントを発生させることができますし、今後もそうするつもりです。しかし、それらが正確ではないのは疣贅のようです。

これに対処する正しい方法は何ですか?

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

haskell - 以前の更新に基づいて UI を動的に更新する

私はUIのFRPの実用的な側面についていくつかの研究を行っており、リアクティブバナナを使用して次の機能を実装するのに苦労しています:選択ボックスの値に基づいて、いくつかの結果を表示する可変量のリストボックスがレンダリングされます. (私は WxHaskell を使用しています。)

結果ビヘイビアーに基づいて非表示および表示される一連の準備済みリスト ボックスを使用してこれを実装するのは非常に簡単でしたが、今回は必要に応じてリスト ボックスを作成および破棄し、各リスト ボックスが結果ビヘイビアーにリンクされるようにします。

これまでのところ、次の成分があります。

  • eParam選択ボックスにバインドされたイベント
  • すべての結果 (リスト ボックスごとの項目のリスト) を保持する(および) でbResults :: Behavior t [[String]]定義された動作eParamstepper
  • updateResultControls :: [SingleListBox ()] -> [[String]] -> IO [SingleListBox ()]結果に基づいてリスト ボックスを破棄または構築する更新関数。戻り値の型が IO であることに注意してください。

BarTabの例を見て、次の実装を試みました。

  • bResultControls :: Behavior t [SingleListBox ()]として定義されるリスト ボックスでの動作stepper [] eUpdateResultControls
  • eUpdateResultControls :: Event t [SingleListBox ()]UI の更新を実行するイベント。bResultControlsこのイベントは、動作とに依存しbResultsます。ただし、ネットワークを更新して IO を実行する必要もあるため、関与する可能性があると思わMomentれます。executeここで行き詰まりました。

私の最新の試みはこれです:

しかし、次のタイプのエラーが発生します。

これにはいくつかの動作のトリミングが含まれると思われます。または、おそらくこれについて完全に間違った方法で行っていると思います。

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

haskell - 再帰的であり、他の動作に依存する動作

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

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

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

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

3 つの質問があります。

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

haskell - プッシュプルとアロー化されたFRPは根本的にどのように異なりますか?

FRP を Haskell で勉強したいのですが、使用するライブラリを決めるのが少し難しいです。多くは失敗した試みのようですが、一部は復活したようです (Yampa での最近の活動など)。

私が読んだところによると、FRP には 2 つの「種類」があるようです: 一方のプッシュプル FRP (Reactive-banana や Reflex など) と、反対側の矢印化された FRP (Yampa のような)。Fran や FrTime の時代には "classic FRP" もあったようですが、最近の活動は見当たりません。

  • この 2 つ (または 3 つ) は、FRP の根本的に異なるアプローチですか?

  • そのうちの 1 つは時代遅れの理論で、もう 1 つは「未来のもの」でしょうか?

  • それとも、異なる目的に対応しながら、並行して進化する必要がありますか?

  • 各カテゴリで最も有名なライブラリに名前を付けましたか、それとも考慮すべき他のオプション (Sodium、Netwire など) はありますか?


J. Abrahamson のコメントで推奨された [Evan Czaplicki の講演](https://www.youtube.com/watch?v=Agu6jipKfYw) をようやく見ました。それは非常に興味深いものであり、私にとって物事を明確にするのに役立ちました. この質問が面白いと思った人には強くお勧めします。
0 投票する
3 に答える
824 参照

haskell - FRP で Behavior を使用する理由

リアクティブバナナを学んでいます。ライブラリを理解するために、誰かがボタンを押すたびにカウンターを増加させるダミー アプリケーションを実装することにしました。

私が使用している UI ライブラリは Gtk ですが、説明には関係ありません。

これが私が思いついた非常に単純な実装です。

これは結果をシェルにダンプするだけです。Heinrich Apfelmusの記事を読んで、この解決策にたどり着きました。私の例では、単一の を使用していないことに注意してくださいBehavior

この記事には、ネットワークの例があります。

この例は、stepperを に変換し、を使用してを戻すEventaを示しています。上記の例では、 のみを使用できましたが、違いはなかったと思います (私が何かを理解していない場合を除きます)。BehaviorEventchangesEvent

では、いつ、どのような理由で使用するのか、誰かが光を当てることができますBehaviorか? Eventすべての s をできるだけ早く変換する必要がありますか?

Behavior私の小さな実験では、どこで使用できるかわかりません。

ありがとう