問題タブ [netwire]
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.
haskell - Bumpless transfer in FRP
I can build a PID controller in the Haskell FRP library netwire using loop
from the ArrowLoop
instance provided for Wire
s.
I can also implement switching between controllers or between a controller and a manual input using switch
.
How can I implement bumpless transfer, for example using the "tracking" strategy explained here (or in any number of control engineering articles/books)? Another strategy might be acceptable if it has good performance, but the tracking approach is appealing for my application because it also address anti-windup.
I'm having trouble squinting at the block diagram hard enough to make it look like the type of two (or one?) loop
applications.
haskell - Netwire で使用する場合の ArrowLoop の誤解
この投稿の優れた回答のリードに従って、ArrowLoop
矢印表記を使用しない実際の例を取得しようとしています。ボンネットの下で矢印がどのように機能するかを完全に理解するまで、矢印表記を使用するのは不快です。そうは言っても、Arrows の (限られた) 理解に基づいて動作する小さなプログラムを作成しました。<<loop>>
ただし、恐ろしい例外で終了します。
私の直感では、<<loop>>
通常、ループに初期値を指定しないと例外が発生します。を含む行でそれを行っていませんfn i 0.0
か? 出力は一致しません:
私が間違っていることを誰かが知っていますか?
haskell - アロー表記から変換
私はまだ、アロー表記と Haskell で定義されたアロー型クラスのセマンティクスとの類似点を理解しようとしています。特に、この質問には、矢印表記で書かれた小さなカウンターの非常に標準的な例があるようです。
これを矢印表記なしで Haskell2010 に変換する方法を教えてもらえますか?
haskell - Netwire 5 の基本構造は何ですか?
私はNetwireに入ろうとしています.ドキュメンテーション、紹介、チュートリアルなどを探しましたが、ほぼすべてのチュートリアルと既存のコードはNetwire 5に関しては時代遅れであり、もはや使用されていないNetwire 4の機能を使用しています.我ら。READMEはある程度役に立ちますが、すべてがコンパイルされるわけではなく、開始するのに十分な情報がほとんど提供されません。
ゲームループを実行してイベントに応答できるようにするためだけに説明または例を求めているので、最終的に知ることができるように情報を求めています。
- 基本構造 (reactive-banana で、ハンドラーを消費し、動作を定義し、イベントに反応するネットワーク記述を作動させる方法など)。
- それが最終的にどうなるか
main
。 - IO イベント (マウスクリック、キーダウン、ゲームループ コールバックなど) の処理方法、セッションでのイベントの発生方法など。
そして、その他の関連するもの。
そこから何かを実行できると考えているので、実験によって残りを学ぶことができます (第 5 バージョンのドキュメントとチュートリアルの状態は恐ろしく存在しないため、すぐにいくつかが表示されることを願っています)。
ありがとうございました!
haskell - netwire: 相互に依存するワイヤでの遅延 (?) の処理
相互に依存するワイヤvelocity
を使用して、オブジェクトを壁から跳ね返らせようとしています。location
単純な 1 次元の例は次のようになります。
これを実行すると、最初のバウンス速度がステップごとに負の値と正の値の間で反転し始めます。
跳ね返った境界に応じて速度を負または正にするように速度ワイヤーに信号を送ることで、それを「修正」できることを私は知っています。できます。しかし、なぜこの動作が見られるのかを理解したいと思います。境界の反対側にオブジェクトを明示的にプッシュするため、反転は一度だけ行う必要があることを知っています。ここでは怠惰が役割を果たしているのではないかと思います。戦略的に配置されseq
ていると、「意図したとおりに」機能する可能性があります。
「ブルートフォース」ソリューションに頼らずに修正する方法の説明と提案が必要です。
haskell - (a -> b -> c) と (Wire semab) から a (Wire semac) を構築します。
簡単な例として、私はこれを持っています。
そして、Int から String へのワイヤを作成できるようにしたいと考えています。
簡単だと思いますが、運がありません。
haskell - Cloud Haskell と Netwire。それらは重複していますか?両方を効果的に使用できますか?
基本的には、FRP と分散型 Haskell で実験したいと思っています。
FRP 用の Netwire と Cloud Haskell を使用して、「ワイヤ」を異なる「ノード」に分散できるようにすることはできないのでしょうか。
しかし、Cloud Haskell はすでに FRP を提供しているかもしれません。あるいは、Netwire はすでに分散型ワイヤを提供しているかもしれません。
分散型 FRP をどのように実現できますか?
haskell - ネットワイヤーの正しい使い方 (5)
しばらくの間、FRP に挑戦したいと思っていましたが、昨日ついに弾丸をかじり、Netwire 5 を使用して始めました (それ自体はかなり恣意的な選択ですが、どこかから始めなければなりません!)。「機能するコード」のポイントに到達することができましたが、ライブラリがどのように使用されると予想されるか、またはそれらが私の症状であるかどうか確信が持てないパターンがいくつかあることに気付きました。私はどこかで何か間違ったことをしています。
私はこのチュートリアルから始めました。これは、非常に簡単に起動して実行するのに十分でした-単純な「増分番号」ワイヤで制御される回転する立方体ができました。
「Esc」が押されるとアプリケーションは終了し、netwire-input-glfwで提供されたワイヤを使用します:
これらの重要な違いは、spin
常に抑制している間、常に何らかの値を返す必要があるということshouldQuit
です。キーが実際に押されるまで、その場合はアプリケーションを終了します。
私を不安にさせるのは、これらのワイヤーを使用しなければならない方法です. 現在、次のようになっています。
このパターンについて私が不快に感じる点が 2 つあります。Right undefined
まず、への両方の呼び出しに渡すという事実stepWire
。(私の理解が正しければ)このパラメータはイベントをワイヤに送信するためのものであり、ワイヤはイベントをまったく使用しないため、これは「安全」ですが、気分が悪いと思います(EDIT多分「イベント」はここで間違った言葉 - チュートリアルはそれを「値をブロックする」と説明していますが、要点はまだ立っています - 私は決してブロックするつもりはなくe
、ワイヤーのどこでもパラメーターを使用しません)。stepWire
イベントがないことがわかっていて、イベントがあったとしてもそれに応答しないことがわかっているが、イベントが表示されないという状況のバージョンがあるかどうかを確認しました.e
()
Right ()
これは よりわずかに汚れていないように感じますがundefined
、それでも私の意図を完全には表していないようです。
同様に、戻り値もEither
. これはワイヤに最適ですが、ワイヤの出力でshouldQuit
パターン マッチを行う必要があることに注意してください。それが阻害することが何を意味するのか本当にわからないので、ただ、ワイヤの数が増えるにつれてこれが扱いにくくなることは想像できます。決して抑制されず、次の値を保持するために常に信頼できるワイヤーを持っています。wt'
spin
return ()
したがって、動作するコードはあるのですが、どういうわけか「やり方が間違っている」という不安な気持ちが残ります。また、Netwire 5 はかなり新しいため、チェックできる「慣用的な」コードの例を見つけるのは困難です。私がマークの近くにいるかどうか見てください。これはライブラリの使用方法ですか、それとも何か不足していますか?
EDIT :私が言及した 2 番目の問題 ( のEither
結果に対するパターン マッチング) は、とを 1 つにspin
結合することで解決できました。spin
shouldQuit
Wire
このワイヤをステップ実行すると、はるかに賢明な戻り値が得られますLeft
。終了できる場合は終了できますが、そうでない場合は、処理するデータの一部があります。また、私の元の方法よりも構成可能性が高いことも示唆しています。
Right undefined
ただし、この新しいワイヤへの入力として渡す必要があります。確かに、現在は 1 つしかありませんが、これが正しいアプローチであるかどうかはまだわかりません。