問題タブ [reflex]
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 - Reflex.Dynamic 内の値で効率的に分岐するにはどうすればよいですか?
バックエンドシステムで維持されているアプリケーションの状態があるとしましょう。このように見えます
バックエンドシステムから最新の状態を取得する機能も持っています
バックエンドに繰り返しクエリを実行することで、それをダイナミックにパッケージ化する方法を理解できると確信しています。
これをhtmlにレンダリングしたい。データ構造の各部分を div にレンダリングします。ただし、存在しないものはまったくレンダリングされるべきではありません。したがって、ms2_maybe_char
isの場合は div がなく、 is a のNothing
場合は .の div はありません。MyState
State1
State2
わかりやすくするためにいくつかの例を示します。
になる
と
になる
理想的には、DOM の各部分は必要な場合にのみ変更する必要があります。そのため、が からにms2_maybe_char
変更された場合は、新しい div を作成する必要があります。または、が からに変更された場合、DOM でその文字列を変更する必要があります。ただし、変更によって兄弟ノードまたは親ノードが再描画されることはありません。Nothing
Just 'a'
ms1_text
"foo"
"bar"
ms1_text
コードをどのように構成すればよいですか? getLatestState
ビルディングブロックとしてのAPIを考えると、これは可能ですか? 単一の値から構築しようとすることで、Reflex の要点を完全に見逃しているのDynamic
でしょうか。アプローチを再考する必要がありますか?
特に、最初の障害は、Dynamic に State1 が含まれているか State2 が含まれているかを簡単に調べられないことです。dyn
orwidgetHold
ここで、状態を単純な値として扱い、全体を描画するアクションを生成できるfmap
関数を使用する可能性があります。しかし、その後、すべての共有が失われます。状態が変化するたびに、UI 全体が最初から再描画されます。dynMyState
m ()
注: これは、Reflex Dynamic 内の値で分岐するにはどうすればよいですか?へのより詳細なフォローアップの質問です。. この質問の違い/より明確な点は、検査された値内のすべての効率的な更新を失わないようにしたいという追加の欲求です。その質問にも協力してくれたみんなに感謝します!
frp - モナドコンテキストでラップされたイベントへの切り替え
私の特定の問題は次のようなものです:
と が与えられたEvent t [a]
場合Event t ()
(ティック イベントとしましょう)、 を生成したいと思いますEvent t a
。つまり、ティック イベントが発生するたびに、入力リストから連続した項目が返されるイベントです。
Reflex には次のヘルパーがあります。
これは私がやりたいことを正確に行っていますが、イベントを入力としてではなく、単なるリストとして受け取ります。を持っているEvent t [a]
ので、イベントを含むイベントを生成して切り替えることができると思いましたが、問題はzipListWithEven
モナドのコンテキストで動作するため、次のようになります。
これはswitch
プリミティブが受け入れないものです。
さて、おそらく私は間違った方法でアプローチしているので、ここに私の一般的な問題があります。座標のリストと tick イベントを生成するイベントが与えられた場合、座標に沿ってオブジェクトを移動するために「使用」できるイベントを生成したいと考えています。したがって、ティックが発火するたびに、位置が更新されます。そして、座標リストを更新するたびに、その新しいリストから位置を生成し始めます。
haskell - Haskell:「型変数のあいまいな」コンパイラエラーを修正するには?
私は GHCJSi のバージョン 0.2.0-7.10.3 を使用しています: http://www.github.com/ghcjs/ghcjs/およびhttps://github.com/reflex-の reflex-dom ライブラリ バージョン 0-4 frp/reflex-dom . Hackage の reflex-dom-0.3 は使用していません。
次の Haskell プログラムは、reflex-dom-0.4 ではコンパイルされません。
エラーが発生します
reflex-dom ライブラリ関数decodeXhrResponse
(および もdecodeText
) をインライン化します。FromJSON a => XhrResponse -> Maybe a
型シグネチャを型変数のないシグネチャに変更しますXhrResponse -> Maybe Apod
。その後、プログラムは正常にコンパイルされます。
rspApod :: Event t Apod
or のような rspApod のスコープ型変数を追加しようとしました rspApod :: Event Spider Apod
が、役に立ちませんでした。
質問:
正常にコンパイルするには、最初のプログラムをどのように変更する必要がありますか? (ライブラリ関数のインライン化と変更は非常に悪いハックです!)
FromJSON
コンパイラがデータ型のインスタンスを見つけて使用しないのはなぜApod
ですか?
jquery - マテリアル UI + reflex-frp => ドロップダウン/選択が機能しない
マテリアル UI を reflex frp と統合しようとしましたが、通常 (css のみの要素) は見栄えがよく、滑らかに見えますが、ドロップダウン/選択フォーム要素を初期化するには jQuery が必要なようです - これは機能しません:
<script>
ステートメントの順序を変更し、本文の -line のindex.html
前に document-ready-jQuery 文字列を挿入しようとしました。runmain.js
を挿入して、スクリプトタグが実行されることも確認しましたalert
。
Main.hs
index.html
haskell - haskell reflex-dom で書かれた Webkit クライアントから Web サーバーにアクセスする
これは、reflex-dom クライアントを使用してサーバント サーバーにアクセスするためのフォローアップの質問です。
Web ブラウザーでクライアント コードを実行すると、すべて正常に動作します。ただし、gtk3 (および Debian) の下で webkit でクライアント コードを実行すると、サーバーで要求を確認できますが、クライアントは応答を受け取りません。
これもまた、ある種のセキュリティまたは CORS の問題であると思います。この投稿を見つけました 2012年からwebkit gtkでWebセキュリティを無効にする方法 (クロスオリジンリクエスト) は、このバグのために不可能であると言っています https://bugs.webkit.org/show_bug.cgi?id=58378 . このバグを見ると、Status: RESOLVED FIXEDと表示されています。言及されたSO投稿の2番目の回答は、未指定のファイルにいくつかの設定を示しています..
私の質問は、WebkitGtk クライアントからサーバーにアクセスするには、どこ(ディレクトリとファイル) で何を指定する必要があるかということです。
haskell - Haddock は #if #else #endif 句で分解します
haddock を使用して github ライブラリのドキュメントを生成しようとしています。入力したコードは次のとおりです。
Xhr.hs
次に、ソース コードの 154 行目の関連セクションを調べました。
私は知りませんでしたし、#if
Haskellの一部でしたが、意味は推測できました。バージョンに応じて、コードは または のいずれかをインポートする必要があります。念のため、バージョンを調べました:#else
#endif
Aeson.Text
Aeson.Encode
これは、ハドックを困難にするのに十分でした。情報ページは、ライブラリdocs
の詳細が入力されるのを待っているいくつかの空の html ファイルを含むというフォルダーに送信されます。Reflex.Dom
haskell - Reflex: イベントのエントリの動的リストに対して複数の http 要求を送信する
reflex-frp の操作 テキスト入力を含むエントリのリストがあります。また、クリックすると n http リクエストをトリガーするボタンもあります。ここで、n はエントリの数であり、各リクエストには対応するテキストが含まれている必要があります。したがって、私は、
使用しようとしていたリクエストを送信するために
したがって、リストのイベントをイベントのリストに変換できる関数が必要です。
しかし、私はそうする方法を見つけていません。最も有望なアプローチは、ファン関数とEventSelectorを含むようですが、私はそれをあまり理解できず、オンラインのドキュメントもあまりありません。
これは可能ですか?
haskell - Haskellスタックの依存関係が壊れていますか?
私は、haskell、stack、ghc などに比較的慣れていません。
ghcjs を使用していくつかのプロジェクトを試してみましたが、reflex-dom-stack-demoを含むいずれのプロジェクトもビルドできませんでした。次のエラーが表示されます。
何かを誤って構成したのか、本当に壊れた依存関係があるのか わかりません。~/.stack
私の実験を通して何度も削除されました。
stackage でこのバグを見つけまし たが、これが私に影響を与えているのかどうか、また修正が完了したら修正されるのかどうかはわかりません。
Ubuntu 17.10 を使用しています。
どんな洞察も大歓迎です。
haskell - Reflex: リセット可能な遅延イベントを作成する
私は Haskell 内で Reflex を使用しており、(質問の目的で) 一定時間、たとえば 2 秒後に発生するイベントを作成しようとしています。ただし、元のイベントが発生するたびにカウンターをリセットする必要があるため、元のイベントが 1 秒間隔で 2 回発生する場合、2 番目のイベントの発生は 1 回のみである必要があります。つまり、最後の元のイベントの 2 秒後です。
私はこの動作を実装することができました
しかし、widgetHold を使用するのはやり過ぎのようです。MonadHold 制約だけが本当に必要なようです。この関数を記述するより慣用的な方法はありますか?
haskell - Reflex-DOM で動的関数を使用する場合のコンテキスト/署名の不一致
このドロップダウンのコンパイルを取得できました:
しかし、私は Obelisk のフレームワーク内で作業しているので、そこで指定された構造内にウィジェットを配置するためにいくつかの変更を試みました。
しかし、私はこのエラーが発生しています:
エラーメッセージは明確ですが、1.これが正しいアプローチであるかどうかもわかりません.2.正しいアプローチである場合、この最後のlet result e = ...
ビットをdo
ブロックに入れるにはどうすればよいですか?
result
または、関数を関数の外に移動すると、次のfrontend
エラーが発生します。