問題タブ [first-class-functions]

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 投票する
8 に答える
22414 参照

python - Pythonのファーストクラス関数とは

ファーストクラス関数とは何かについて、私はまだ混乱しています。私の理解が正しければ、ファーストクラス関数は 1 つの関数をオブジェクトとして使用する必要があります。これは正しいです?

これはファーストクラスの関数ですか?

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

javascript - ファーストクラスの関数を持つ言語は、必ずクロージャを許可しますか?

私はクロージャーの広い概念を理解しています (関数は、定義された時点で環境のスナップショットと共に保存されます)。ファースト クラスの市民としての関数とは、言語の他のデータ型と同様に、関数を渡したり返したりできることを意味します。

興味深いことに、Python、Javascript、Scheme など、私が扱ったすべての言語は、ファースト クラスの市民としての機能を備えているため、常にクロージャも備えているようです。

実際、関数との間でクロージャーを渡したり返したりすることは、関数を言語の第一級市民として実装する1つの方法ですが、それらを書くことができることが、関数が第一級市民であることの直接的かつ必然的な結果であるかどうかはわかりません。

より具体的に言えば:

ファーストクラスの関数を持っているが、クロージャーを書くことができない言語の実際の例を提供できますか?

0 投票する
2 に答える
1710 参照

javascript - Javascript で実行時に関数を作成できますか?

Wikipedia の第 1 級市民に関する記事では、「一部の作成者」は、言語が実行時の関数の作成をサポートしている場合、関数はその言語の第 1 級市民にすぎないと考えていると述べています。James Coglan によって書かれたこの記事は、明らかに関数をファーストクラスの市民と呼んでいます - 彼がファーストクラスの基準をめぐる論争を認識しているかどうかはわかりません。

ここに私の質問があります:

  1. 「実行時に作成する」という追加の基準を使用すると、JavaScript プロシージャーは第一級市民ですか?

より一般化された基準 (他のオブジェクト全体に適用可能) に基づくと、JavaScript 関数は非常に明らかに第一級の市民であることに注意してください。つまり、変数として渡すことができます。したがって、上記の基準は、あるユーザーが書いているように、「恣意的」ではない会話に興味深いダイナミクス、または少なくとも明確なダイナミクスを追加すると思います

  1. もしそうなら、実行時の関数の作成は JavaScript ではどのように見えるでしょうか (これは私たちがプロミス、コールバック、匿名などと呼んでいるものですか?)
  2. そうでない場合、関数の作成は別の言語での実行時にどのように見えますか?
0 投票する
3 に答える
649 参照

swift - Swiftで「ファーストクラスの機能」を理解するには?

Swift の関数型プログラミングに関する本をいくつか読んでいます。Swiftの機能は「ファーストクラスの機能」であると書かれている本を見て、「ファーストクラス」の意味を混乱させました。誰かが私に答えたり、サンプルコードを教えてくれますか?

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

first-class-functions - Pari/GP: 戻り値としてのユーザー定義関数

関数を返すユーザー定義関数を使用する Pari/GP ユーザー定義関数に問題があります。以下は簡単な例です:

h(1)=(g(2))(1)=y(1)=(f(2))(1)=3 になると思っていました。私は Pari のファーストクラス関数の制限に遭遇していますか、それとも何か間違っていますか? 後者の場合、どうすれば修正できますか?