問題タブ [lazy-evaluation]
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 - 素数のストリームを出力するこの Haskell コードのチャンクを説明してください
このコードのチャンクを理解するのに苦労しています:
誰かが私のためにそれを分解できますか? 再帰があることは理解していますが、それがこの例の再帰がどのように機能するかを理解できない問題です。
jquery - 遅延読み込み/遅延評価用の JQuery プラグイン?
そのようなjQueryプラグインはありますか?
より具体的には、エレガントで簡単な方法を使用して、実際に必要になるまで (イベントが発生するまで) コードの実行を延期したいと考えています。このイベントが発生すると、延期されたコードは 1 回だけ実行されます。ある種の遅延初期化。
たとえば、ドキュメントの準備ができたときではなく、ユーザーがその要素の上にカーソルを置いたときに、アニメーションを要素に適用します。
手動で行う方法は知っていますが、匿名関数を実行する前に「初期化済み」フラグを確認して設定する必要があるため、好きではありません。すでに完了しているかどうか疑問に思っていました(バグがなく、いくつかのおいしい機能があります)。
javascript - QtScriptでレイジー配列アクセスを実装できますか?
レイジー配列ポピュレーションを実装するために[]をオーバーロードするQtScriptで使用するQObjectを実装することは可能ですか?
私はこのようなものを実装したいと思います:
値はC++コードで遅延計算されます。これは可能ですか?
scala - 「orElse」の遅延可変引数バージョンの書き方
可変数の引数をとる一般化されたorElse
メソッドを書くことは可能ですか? Option
つまり、次の代わりに:
あなたが使用することができます:
sorting - 短絡ソート
という事は承知しています:
実際には 2**1 のみを評価し、残りは評価しませんが、私が読んでいる本には次のように書かれています。
使用されるのはそれだけなので、リスト内の最小のアイテムを見つけるだけで済みます。これはどのように作動しますか?私が知る限り、これは私が知っているソート アルゴリズム (バブル ソートなど) では不可能です。
これが機能すると私が考えることができる唯一の方法は、並べ替えアルゴリズムがリスト全体を調べて最小のアイテムを探し、そのアイテムなしでリストを再帰する場合です。私には、これは本当に遅く聞こえます。
これはソート機能の仕組みですか、それとも私が知らない別のソートアルゴリズムがあり、そのような短絡を可能にしますか?
c++ - COMポインタをグローバルシングルトンオブジェクトに格納する際の問題
バックグラウンド
私が使用しているアプリケーションには、いくつかのCOMDLLがあります。
COM DLLの1つには、他のDLLのCOMインターフェイスへのポインタを格納するグローバルシングルトンオブジェクトがあります。これはグローバルシングルトンオブジェクトであるため、ポインタを取得しようとしているインターフェイスがまだロードされていないDLLに存在する可能性があるため、レイジー初期化イディオムを採用しました。
(補足:グローバルオブジェクトはプロセス内で構築されるため、単一のDLLを登録する場合、これは特に重要regsvr32
です。このプロセス中にDLLが別のDLLへのインターフェイスを取得しようとしないようにします。)
たとえば、私の怠惰な初期化メソッドは次のようになります。
注: m_pMyOtherObject
は、このタイプのメンバー変数ですCComPtr
。
怠惰な初期化はここでの私の問題とは関係がないかもしれませんが、完全を期すために含めています。
問題
私が気付いたのは、状況によっては、アプリケーションがシャットダウンしたときにアサーションが失敗することです。ただし、 (メンバー変数として格納するのではなく)アクセスする必要があるQueryInterface()
たびに呼び出すようにコードを変更すると、アサーションが防止されます。IID_IMyOtherOBject
これは、COMオブジェクトの存続期間の問題であるように思われます。私の仮説は、私はstoring
COMポインターであるため、私が指しているCOMインターフェイスの破棄とそれに対する私自身のポインターとの間に何らかの同期が必要であるというものです。
(私が使用している)クラスについての私の理解は、それが生涯の問題(すなわち、電話と)CComPtr
に対処することの多くの頭痛を取り除くということです。しかし、私の場合は機能していないようです。AddRef()
Release()
誰かが私が間違っているかもしれないことを選ぶことができますか?
list - Haskellで無限に繰り返すリストを作成するにはどうすればよいですか?
私は、ErikMeijerのChannel9WebキャストからHaskellを自分自身に教えようとしているC#の人です。zipとmodを使用してリストのすべての「n」要素をスキップするという興味深いパズルに出くわしました。
modの使用を避けることができれば、(非常に大きなリストやストリームの場合)より効率的かもしれないと思っていました。
iの値をnと単純に比較できるように、整数の繰り返しリストを怠惰に作成することを考えました。
呼び出しが無限repeatInts 3
に返されるように[1,2,3,1,2,3,1,2,3,1,2,3,..]
。
これを考えると、次のevery
ように再定義できます。
だから私の質問は:どのように実装しrepeatInts
ますか?
javascript - アクセス時にJavascriptプロパティを作成または交換することは可能ですか?
私はjavascriptである種の怠惰な初期化されたオブジェクトプロパティを持ちたいので、どういうわけかプロパティの読み取りおよび書き込みアクセスをオーバーロードしたいと思います。
ここで、myobjは、スクリプトに提供するオブジェクトです。
理論的根拠:アプリケーションのスクリプトエンジンとしてJavascript(Rhino)を使用したいのですが、スクリプトからアクセスする必要のあるデータ構造は非常に大きく複雑になる可能性があります。したがって、事前にすべてをjavascriptオブジェクト、特にjavascriptオブジェクトにラップしたくありません。このアプリケーションの平均的なスクリプトは、それらの非常に小さなサブセットしか必要としないためです。一方、スクリプトをできるだけシンプルで読みやすくしたいので、スクリプトで明示的に文字列引数を使用してgetメソッドまたはsetメソッドを使用する必要はありません。
f# - F#: 遅延評価の奇妙さ
次のコードがあるとします。
インタラクティブウィンドウ(毎回リセット)で、
電話すると、次のようlet res = foo.Force ()
になります。
を呼び出すとfoo.Force()
、次のようになります。
どちらの場合も、単に「foo」と出力されることを期待していましたが、2 番目のケースでは「foo\nbar」と出力されます。何が起きてる?
performance - Haskellのパフォーマンスについての推論
フィボナッチ数列のn番目の項を計算するための次の2つのHaskellプログラムは、パフォーマンス特性が大きく異なります。
これらは数学的には非常に似ていfib2
ますが、リスト表記を使用して中間結果をメモし、fib1
明示的な再帰があります。中間結果がキャッシュされる可能性があるにもかかわらず、fib1
実行時間はの場合でも問題になりfib1 25
、再帰的なステップが常に評価されることを示唆しています。参照透過性はHaskellのパフォーマンスに何か貢献しますか?できるかどうかを事前に知るにはどうすればよいですか?
これは私が心配していることのほんの一例です。怠惰に実行された関数型プログラミング言語のパフォーマンスについて推論することに固有の困難を克服することについての考えを聞きたいです。
要約: 私は3lectrologosの答えを受け入れています。なぜなら、コンパイラの最適化に関して、言語のパフォーマンスについてあまり推論しないという点は、Haskellでは非常に重要であるように思われるからです。と。コンパイラーの重要性は、怠惰で機能的な言語でのパフォーマンスに関する推論を、他のタイプのパフォーマンスに関する推論と区別する要因であると言いがちです。
補遺:この質問で起こっている人は誰でも、 JohanTibellの高性能Haskellについての話のスライドを見たいと思うかもしれません。