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

haskell - Functional Banana Traveler - 壊れたタイプのミステリー

次のエラーが表示されます。

t0Eventt1Behavior問題の手がかりですが、この手がかりをどのように解釈すればよいかわかりません。それでは、いくつかのタイプ、誤ったコード、およびそれが機能する理由についての私の推論から始めましょう。

initialAMap :: AgentMap

updateAgentMap :: HyperMap -> PlanetMap -> AgentMap -> AgentMap

bHyperMap :: Behavior t HyperMap

bPlanetMap :: Behavior t PlanetMap

accumB :: a -> Event t (a -> a) -> Behavior t a

これで、最初のパラメーターAgentMap. 2 つ目は である必要がありますEvent t (AgentMap -> AgentMap)。そこに着く方法?から始めるとupdateAgentMap <$> bHyperMap、タイプは になりますBehavior t (PlanetMap -> AgentMap -> AgentMap)。さて、もう 1 つのパラメータupdateAgentMap <$> bHyperMap <*> bPlanetMapで type を指定しますBehavior t (AgentMap -> AgentMap)。もうすぐですよね?

これを考える (<@) :: f a -> g b -> g a と、 eTick :: Event t ()

Iの代わりa(AgentMap -> AgentMap) これを行うことができるはずです (updateAgentMap <$> bHyperMap <*> bPlanetMap)<@ eTick

取得するためEvent t (AgentMap -> AgentMap)

しかし、それほど速くはありません。私の推論はどこかで失敗しているに違いありません。誰か教えてくれませんか?

更新: eTick が定義されていなかったために、この問題が発生したことが判明しました (と思います)。コードの多くを独自のファイルに分離しようとしました。eTick を離れるundefinedことは満足のいくものではないことはわかっていましたが、これについて何をしたいのかまだ考えていません。そのため、その間、コードを元のようにletバインディングに移動し始めました。これでコードがコンパイルされます。letバインディングがそこに長く留まることを望みません。私の期待は、ブレークアウトプロジェクトを再訪することで、コードをより適切に構造化する方法が示されることです。

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

haskell - 反応バナナでビヘイビアに他のビヘイビアを含める方法

みんなリアクティブバナナFRPフレームワークでコンピューターゲームをやっているみたいなので、私もやってみました。ただし、ゲーム データをリアクティブ バナナ型として記述しようとして、初期段階に行き詰まっていBehaviorます。

基本的に、私はゲーム キャラクター (フロドやサムなど) の (変化する) リストを作成しようとしています。ゲーム キャラクターは、ゲーム ティック (ティック イベントとしてモデル化) ごとに更新される場合があります。ゲーム キャラクターが変更されるたびにシングルEvent (Character)がトリガーされ、最終的にキャラクターの更新がネットワーク経由で送信されるという考え方です。Asteroids.hsの例と比較した場合の利点は、ゲーム ステート全体 (ゲーム キャラクターの全リスト) をネットワーク経由で送信する必要がないことです。これは、単一のゲーム キャラクターを持つ多数のイベントが発生するためです。ゲーム キャラクター リストを含む単一のイベントの代わりに。

1 つのゲーム キャラクターの場合、これで問題なく動作します。Behavior (Character)withを作成してmapaccum、キャラクターが更新されたときにキャラクター更新シグナルが送信されるようにしました。Behavior私が解決できない問題は、これをゲーム キャラクターのリストで機能させる方法です。

Behaviorゲーム中にキャラクターが出入りする可能性があるため、ゲームキャラクターリストを としてモデル化しようとしています。ここで動的イベント切り替えを使用する必要がありますか? またはBehavior、個々のゲーム キャラクターを使用しない場合 (Behaviorゲーム キャラクター リストのみを使用する場合)、キャラクター リストを調べているときに条件付きで更新イベントをトリガーする方法はありますか? それとも、ここで何かを理解していませんか?

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

haskell - Functional Banana Traveler - 入力 処理 : これは私が望むことをしますか?

ゲームの入力を管理したい方法は、TChan をポーリングし、eTick が発生したときにイベントを作成することです。しかし、私が試している方法は機能しますか?

data UAC = UAC (AID,PlayerCommand) deriving Show

fromPoll 「入力、現在の時刻などの可変データを頻繁にポーリングして動作を取得します。結果の動作は、イベント ネットワークが入力イベントを処理するたびに更新されます。」のドキュメントから。

私はこれを正しく理解していますか?TChannel は他のコードから取り込まれており、それeTickを空にして別のコードを取得するたびにEvent t [UAC]?

私の理解が間違っているか、この計算は fromPoll には高すぎるのかもしれません。その場合、どの方向に進むのがより良いですか?

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

haskell - Functional Banana Traveler - tick イベントの何が問題になっていますか?

私は tick イベントを実装しようとしていますが、それが機能しないことを示す小さなテストを以下に示します。なぜそれが機能しないのかについての洞察をいただければ幸いです。

ここにいくつかのテストデータがあります。

上記を実行すると、Mainこの出力が得られます。

ファイルCommands.txtが存在することはありません。この問題は、ティックイベントの不良に起因すると考えています。

thisからタイマーの実装についてのアイデアを得ましたが、これについて間違った方法で考えているのだろうか。何か案は?

fromPoll編集:正しいことをしているという保証が欲しかった. 上記のテストを追加しました。

0 投票する
3 に答える
346 参照

javascript - 呼び出す前にすべての関数引数を順番に満たす

次のzip関数(特にinvoke関数)をより機能的にする方法を理解しようとしています。私が抱えている問題は、呼び出しメソッドが値をディスパッチする前に、左側と右側の両方が満たされるのを待たなければならないことです。正しい値が圧縮されるように値を順番に呼び出す必要があります。それ以外の場合は、これを満たすためにカレー/部分関数を検討します。

この障害を取り除くために使用できるものはありますか。

以下は、zip 関数を満たす単純な例です。

おまけ:可変配列の削除。

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

racket - ラケット「ユニバース」のティーチパックはFRPの例ですか?

2htdp /universeのティーチパックは、関数型リアクティブ プログラミングの良い例 (または悪い例、またはそうでない例) ですか?

コンセプト (ティック/入力ごとに世界の新しい状態が構築される) には合っているようですが、それに関連付けられた FRP ラベルは見たことがありません。

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

haskell - 再帰的に自分自身に依存するリアクティブ バナナ動作を実装する方法は?

イベントの発生と動作の現在の値に基づいて値を変更したい動作があります。以下の例では、ブール値の動作が True であるか False であるかに基づいて更新される 2 つのカウンターがあります。このコードは<<loop>>例外でクラッシュしますが、再構築して機能させる方法や、この問題に対処する方法がわかりません。

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

javascript - FRP と Bacon.js を使用してダブルクリックとシングルクリックを適切に処理する

Bacon.js でシングル クリックとダブル クリックを区別する最も適切な方法を見つけようとしていますが、これがどのように機能するかを完全に把握していないように感じます。以下はダブルクリックを検出するために機能しますが、シングル クリック イベントに対して異なる動作 (つまり、異なるコールバック関数) をエレガントに指定する方法については、少し困惑しています。

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

ios - シグナルチェーンでエラーを送信する方法

整数値を含む信号 A があります。-1 の値は無効な結果を示すため、値として -1 を渡す代わりに、エラーを送信したいと思います。このようにして、B にサブスクライブするものはすべて、subscribeNext: を介して有効な整数を受け取り、subscribeError: を介してエラーを受け取ります。

私は RACSubject でこれを行う方法を知っていると思います:

次の行に沿ってこれを行うためのより「インライン」な方法があるかどうか疑問に思っています。

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

objective-c - dispatch_queue sendComplete で作成された RACSubject がマージされたシグナルにならない

DISPATCH_QUEUE_PRIORITY_DEFAULT gcd キューで実行されている dispatch_async ブロックの場合: 2 つの RACSubject オブジェクトを作成し、RACSignal マージを使用して、サブスクライブを完了します。次に、このテストのために (そして実際のコードでシナリオを再現するために)、両方で sendComplete を送信します。マージされたシグナル完了サブスクリプションは決して発火しません。サブジェクトに 2 つの完了サブスクリプションを個別にアタッチしましたが、それらは起動します。gcd キューの代わりにメイン スレッドで同じテストを行うと、期待どおりに動作します。

これを機能させる方法はありますか、それともメインスレッドですべてのサブジェクトを取得するためにリファクタリングする必要がありますか?