問題タブ [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.
functional-programming - いつサンクするのが良いですか?
熱心な評価の代わりに遅延評価を使用する方が良いのはいつですか? 式が 1 回だけ計算されるか、まったく計算されないことがわかっている方がよいでしょうか。
haskell - GHCi let 束縛が関与するときのサンクの異なる振る舞いを理解する
Haskell での並列および並行プログラミングに関する Simon Marlow の本からいくつかの例を試してみたところ、よくわからない興味深い動作に出くわしました。これは、GHC の内部動作のいくつかを理解しようとしている私に関するものです。
REPLで次のことをするとしましょう:
z がすでに WHNF に評価されていることを除けば、これは私が予想したこととほぼ同じです。同様のプログラムを作成して、ファイルに入れましょう。
GHCiでそれをいじります:
したがって、これは少し異なる動作をします:z
事前に WHNF に評価されません。私の質問は:
ファイルから定義をロードするときではなく、z
行うときに REPL で WHNF に評価されるのはなぜですか。let z = (x,x)
私の疑惑は、それがパターンバインディングと関係があるということですが、明確にするためにそれをどこで調べたらよいかわかりません (完全に間違っているかもしれません)。ファイルの例のように何らかの形で動作することを期待していました。
なぜこれが起こるのか、ポインタや簡単な説明はありますか?
javascript - Koa と Twitter - 「サンキング」が機能しない
次のように関数をラップするかvar thunkedFunction = function(params) { return function(callback) { originalFunction(params, callback) }; )
、node thunkify ライブラリを使用して、サンクによって Koa で動作するサードパーティの非同期関数を取得しました。
ただし、ntwitter のストリームでこれを試すと、次のようになります。
次のエラーが表示されます:「未定義のプロパティ stream_base を読み取れません」。
ntwitter (node-twitter 上に構築) をさらに掘り下げると、Twitter.prototype.stream 関数が this.options.stream_base を呼び出していることがわかります。また、this.options は、通常呼び出すと定義されます。つまりtw.stream(function(stream) {...});
、関数をサンクすると未定義になります。サンク時に関数がスコープを失う理由はありますか?これを回避する方法はありますか?
node.js - Thunkify + Mongoose を使用した KoaJS
私は最初のkoajsプロジェクトに取り組んでおり、ジェネレーター関数、yield、thunksなどを理解した(またはしようとした)後、マングース(私が大きく依存している)で問題が発生しています。フォーラムを検索した後、解決策はthunkifyでした:
コーヒースクリプト:
JavaScript:
これは私の頭では理にかなっています...しかし、私はこのエラーを受け取っています:
...うーん。ヘルプ?:)
node.js - thunkify npm パッケージを正しく使用できない
関数には次のシグネチャがあります。
co generator 関数内で呼び出したいので、thunkify で次のようにラップしてみます。
その結果、単体テストが失敗し、スタック トレースに理由が表示されません。
haskell - Haskell フィボナッチの説明
私は Haskell にまったく慣れていないので、フィボナッチ数列の遅延表現がどのように機能するかについて頭を悩ませようとしています。
これは以前に尋ねられたことは知っていますが、結果の視覚化に関して私が抱えている問題に対処した回答はありません。
コードは、使用する標準的なものですzipWith
私は次のことを理解しています:
zipWith
文字通り 2 つのリストを一緒に圧縮しますtail
リストの最初の要素を除くすべてを取得します- Haskell は、「予定の」計算データを として参照し
thunks
ます。
私の理解では、最初に追加[0,1,<thunk>]
して[1,<thunk>]
使用zipWith (+)
してを与え[1,<thunk>]
ます。だから今、あなたは持っています
私がグーグルで検索した多くの参考文献は、その後、上記の行を次のように「視覚化」しました。
私の質問はこれです:
fibs
上記の行のコンポーネントが [1,1,<thunk>]
ではなくのみに対応しているの はなぜ[0,1,1,<thunk>]
ですか?
fibs
リスト全体に加え<thunk>
て?
c++ - 警告 C4407 に関して、VC は標準に準拠していますか?
次のソースは、VC で警告 C4407 を生成し、コンパイラは実際に正しくないコードを生成します。
pA
の呼び出し時にポインターが調整されずpa
、 のthis
ポインター値が正しくないため、生成されたコードは正しくありませんf
。ただし、コードは GCC で正常にコンパイルされ、clang は警告なしで実行されます (strict-aliasing を除く)。ポインターpA
は、GCC と clang によって生成されたコードで適切に調整されます。それで、標準はこれについて何を言っているのだろうかと思いますか?上記のコードのキャストは標準に従って問題ありませんか? それとも、GCC と clang の非標準拡張ですか?