問題タブ [thunk]

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 に答える
1277 参照

haskell - 値が弱頭正規形に評価されているかどうかをテストします

Haskellでは、値が弱い頭の正規形に評価されているかどうかをテストすることは可能ですか? 関数が既に存在する場合、次のような署名があると予想されます

同様の機能が存在する場所がいくつかあります。

以前の回答で ghci コマンドを紹介されました。:sprintこのコマンドは、すでに弱いヘッドの通常の形式に強制されている値の部分のみを出力します。:sprint値が評価されたかどうかを観察できます。

IOそうでなければ立ち入り禁止のプロパティを調べることができます。たとえば、IO2 つの値が同じ宣言に由来するかどうかを比較することができます。これは の によって提供され、StableNamedata -reifySystem.Mem.StableNameで観察可能な共有の問題を解決するために有名に使用されます。関連は、参照された値が弱いヘッドの正規形であるかどうかをチェックするメカニズムを提供しません。StablePtr

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

c++ - 独自の型のベクトルを返す C++ std::function (再び再帰型)

理想的には、次の型を宣言したいと思います。

これはフォローアップ サンクのベクトルを返すサンクです。Recursive typedef function definition : std::function return its own typeからの情報を使用して、ここまで取得できました。

ただし、たとえば、これらをスタックにプッシュするには、次のようにする必要があります。

理想的には、このようなものを使用するコードでの言及を避けたいと思いRecursiveHelperます。action_t のスタックが必要な場合は、適合するラムダを直接プッシュできるはずです。

これを達成する方法はありますか?

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

scala - Scala サンクへの持ち上げ

別の関数の結果を Promise にラップする関数があります。これをリフト関数に昇格させて、他の場所で再利用できるようにしたかったのです。元の定義は次のとおりです。

だから私が最終的にやったことは次のとおりでした:

これを再利用するにはどうすればよいですか?つまり、渡す 2 番目の引数はサンクにする必要があるため、関数本体が必要とするパラメーターに関係なく、任意の関数本体を渡すことができます。

持ち上げられた関数を次のように呼び出すと:

これは 型Int => Promise[Int]で、 はをsomeOtherFunction返しますInt。私はちょうどPromise[Int]私が電話したときに欲しいmyLiftFunc

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

multithreading - GHCのサンクはどれくらいアトミックですか?

GHC は複数のスレッド (明示的なスレッド、またはスパークを評価する内部スレッド) によってアクセスされるサンクをどのように処理しますか? 複数のスレッドが同じサンクを評価し、作業が重複することはありえますか? または、サンクが同期されている場合、パフォーマンスが低下しないようにするにはどうすればよいでしょうか?

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

ios - Swift - App store reject - 再抽象サンク ヘルパーの部分適用フォワーダー

アプリが Apple に拒否されました。ADHOC ビルドとしては問題なく動作しますが、Apple がテストを行うとクラッシュします。どんな助けでも大歓迎です。

私が得ているエラーは(クラッシュログ)です:

私のコードは -

以下のコード スニペットの最後の行は 109 行目です。

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

javascript - サンクではなくプロミスで co ライブラリを使用する利点は何ですか?

私はcoライブラリの使用法について読んでいましたが、ほとんどのブログ投稿で見た一般的な設計パターンは、サンクでコールバックを持つ関数をラップすることです。次に、es6 ジェネレーターを使用して、これらのサンクをcoオブジェクトに生成します。このような:

そして、読みやすさやエラー処理の向上など、約束のすべての利点をもたらすので、それは理解できます。

しかし、coすでに利用可能なプロミスがある場合、それを使用する意味は何ですか?

なぜ次のようなものではないのですか

私にとって、co は Promise バージョンと比較してコードをより混乱させます。