問題タブ [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 投票する
4 に答える
1231 参照

haskell - リアクティブバナナでの振る舞い

すみません、反応バナナとFRPを調べ始めたところです。

反応バナナの作成者は、私の提案に従ってこの例を作成しました。この例では、増減できるカウンターを作成します。彼は、イベントを蓄積する accumE 関数を使用します。Event 型はある程度理解できて、かなりのテストができたと思いますが、Behavior もあったことを思い出しました。調べてみましたが、似たような状況で使われることを意図しているようです。accumE がイベントに対して行うように、既存の変数を変更します。

動作とは何を意味し、どのような使用例がありますか?

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

haskell - react-banana-wx を使用した UI 入力

反応バナナを使用する場合、UI 要素のコンテンツをどのように取得しますか? event0 は type のイベントを返しますEvent ()。これは、コントロールの型ではなくユニット型です。event1 はタイプ のイベントを受け取りますがEvent w (a -> IO ())、コマンドのタイプはEvent w (IO ())です。mapAccumE と mapAccumB は純粋な関数をパラメーターとして受け取るためget text foo、それらと一緒に使用することはできません。

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

haskell - 私は反応バナナを正しく使用していますか?

これは、reactive-banana ライブラリを使用した Haskell FRP プログラムの例です。私は Haskell について自分のやり方を感じ始めたばかりで、特に FRP が何を意味するのかがよくわかりません。以下のコードに対する批評をいただければ幸いです

ここに要点があります: https://gist.github.com/1099712

これが accumE の「良い」使用法であるかどうかについてのコメントを特に歓迎します (この関数が毎回イベント ストリーム全体をトラバースするかどうかはわかりませんが、そうではないと思います)。

また、複数のソケットからメッセージを取り込む方法を知りたいです-現時点では、永遠に1つのイベントループがあります。この具体的な例として、カウンター内の IdMap の現在の状態を照会するために、2 番目のソケット (zeromq 用語の REQ/REP ペア) を追加するにはどうすればよいでしょうか?

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

haskell - 反応バナナ wx のインストール

ライブラリ reactie-banana-wx をインストールしようとすると、次のエラーが表示されます。

コマンドをインストールしました:

問題の修正にご協力ください。

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

haskell - リアクティブバナナはネットワーク内のサイクルを処理できますか?

次のようなコードがあります。

evtAutoLayoutがevtAutoLayoutにフィードするguiStateにフィードすることがわかります。つまり、そこにサイクルがあります。これは意図的なものです。自動レイアウトは、平衡に達するまでGUI状態を調整し、その後Nothingを返すため、ループを停止する必要があります。もちろん、新しいモデルの変更で再び開始できます。

ただし、これをまとめると、コンパイル関数呼び出しで無限ループが発生します。autoLayout = Nothingの場合でも、コンパイル中にスタックオーバーフローが発生します。

guiStateでユニオン呼び出しを削除し、画像からevtAutoLayoutを削除すると...

それはうまくいきます。

助言がありますか?

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

haskell - 反応バナナで複数のウィンドウと単一のデータ構造を処理する方法

次の状況を処理するために、リアクティブ バナナがどのように設計されたのか疑問に思っています。

中心的なデータ構造があるとしましょう。ユーザーは、データを表示し、ユーザーがデータを変更できるようにするさまざまな種類のウィンドウをいくつでも自由に開いたり閉じたりすることができます。

その性質上、一つの大きなネットワークを作るだけではうまくいかないと思います。これは、各ウィンドウにネットワークがあり、何らかの形で接続されているものですか?

このような他の状況では、データ構造を単一のチャネルの背後に配置し、全員が更新を送信しました。そして、データ構造は、ウィンドウがすべて「リッスン」した更新を「公開」します (イベントを発生させます)。

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

haskell - 反応性バナナ:行動の最新の値を含む発火イベント

起動時に2つのことを実行したいイベントトリガーがあるとします。まず、いくつかの動作の値を更新する必要があります。次に、他の条件が満たされた場合、動作の更新された値で別のイベントsend_offを発生させたいと思います。コード形式で表現され、私が持っていると仮定します

次に、質問は次のとおりです。??????に何を入れますか これにより、send_offは動作の最新の値を送信します。これは、適用されたばかりのトリガーからの更新を含む値を意味します。

残念ながら、私が正しく理解していれば、Behaviorのセマンティクスは、更新された値がすぐに利用できないようなものです。したがって、ここでの唯一のオプションは、基本的に、作業を複製し、Behaviorの更新された値を再計算して、すぐに使用できるようにすることです。別のイベントでは、つまり?????? のようなもので

これで、ビヘイビアの代わりにディスクリートを使用することで、ビヘイビアの更新された情報をすぐに利用できるようになるという感覚がありますが、これは実際には、元のイベントと同時に発生するイベントを提供することと同じです。更新された値を使用し、リアクティブなものを見逃していない限り、バナナは、他の2つのイベントが同時に発生した場合にのみイベントを発生させる方法を提供しません。つまり、イベントの結合を提供しますが、交差点は提供しません。

だから私は2つの質問があります。まず、この状況についての私の理解は正しいですか、特に上記の私の解決策がそれを回避する唯一の方法であるという結論で正しいですか?第二に、純粋に好奇心から、イベントの交差点に対処する方法について開発者による考えや計画はありましたか?

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

haskell - 反応バナナ: AddHandler を作成する方法?

私は現在、Heinrich Apfelmus の react -bananaを通じて FRP を知ろうとしています。これは、私が調べた他のライブラリと比較して、非常によく文書化されたシンプルなライブラリのようです。

ただし、AddHandler型について頭を悩ませることはできません。GLFWを使用してマウス ボタンのクリックを取得し、 のようなものにしたいとしましょうeMouseButton :: Event ()例を見ると、どうにかしてfromAddHandlerを使用する必要があるようですが、そのAddHandler引数を組み立てる方法がわかりません。newAddHandlerどうにか使い切らなければならないと思うのですが、いかがでしょうか?

reactive-banana以外の何かに接続する方法の例はwx、大いに役立つと思います。

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

haskell - 反応バナナの「合計イベント」の何が問題になっていますか?

私は反応バナナを学んでおり、サーバー側のアプリで使用するつもりです。私は RxJ のバックグラウンドを持っているので、Event をさまざまなコンビネーターと組み合わせることに慣れています。そこで、単純なイベント コンビネータの例から始めました。2 つの整数イベントを合計イベントに結合する単純なリアクティブ バナナの例を作成しようとしました。異なるイベントの値を結合できるようにするには、最初にそれらをビヘイビアにし、結合を行い、最後にそれを新しいイベントにする必要があることを理解しています。これが私がやった方法です:

完全な実行可能な例はGist 1594917にあります。

ここでの問題は、イベント (e1、e2) の 1 つに新しい値が表示されたときに sumE イベントが正しくトリガーされる一方で、古い値が含まれていることです。これはステッパーの仕組みによるものと思われます (イベント発生の「少し後」にビヘイビアーの値が変化します)。Behavior を Discrete に置き換えてみましたが、同じ結果になりました。

この種のイベントコンビネータを正しく動作させる簡単な方法はありますか?

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

haskell - リアクティブバナナで繰り返されるイベントをどのように削除しますか

リアクティブバナナには、一連の番号を生成するイベントストリームがあり、そのうちのいくつかは連続して数回繰り返されます(すべての重複ではなく、連続した重複だけです)。連続していない重複のみを含むようにそのイベントストリームを変更するにはどうすればよいですか?

変更を使用して、イベントが新しい番号の場合にのみ動作が「変更」されると考えて動作に変換しようとしましたが、代わりに、新しい入力イベントが受信されるたびに動作が変更イベントをトリガーします。