一流の機能とは?
「ファーストクラス機能」とは、機能の取り扱いが一連のガイドラインに準拠している場合、コンピュータープログラミングおよびコンピューターサイエンスでコンピュータープログラミング言語に適用できる用語です。ただし、これらのガイドラインの完全な範囲と深さは正式には合意されていません。 ファーストクラスの関数コンピュータープログラミング言語を使用するには、サポートする必要がある主な機能は、関数を他の関数に引数として渡す機能です。 また、関数は変数に割り当てられて保存できるようにする必要があります。 ファーストクラス関数を構成するものを決定するために使用されるその他のプロパティには、実行時に関数を動的に生成する機能や、関数が別の関数の戻り値として機能する機能が含まれます。 一流の関数アーキテクチャをサポートする言語は、高度な抽象化を可能にし、場合によっては、実行時の動的コード生成のメカニズムを提供します。
「関数」という用語が大まかに定義された意味で使用される場合、変数内でプログラム内の関数を渡すという概念は、一流の関数サポートをネイティブに実装する言語に必ずしも固有ではありません。 コードのブロックを関数に渡す機能、または関数から動的でないコードを返す機能は、さまざまなメカニズムを通じて多くのプログラミング言語で簡単に実行できます。 ただし、ファーストクラス関数言語の定義の厳密な部分の1つは、変数としての関数の処理をネイティブで行う必要があることです。条件付き定義などのメタデータを使用せず、コンパイラを呼び出してコード。 「関数」という用語は、独自に呼び出される独立したコードブロックを指すためにも使用されます。つまり、オブジェクト指向プログラミング言語でメソッドとして知られるコードブロックや、他の言語でプロシージャと呼ばれるブロックは含まれません。
言語が一流の機能コードを許可するように設計されている場合、一部の設計パターンは他の言語よりも直接実装できます。 関数は関数を変数として受け取り、新しい関数を作成して呼び出し元のコードに新しい関数を返すことができるため、プログラムコードの実行時作成のメカニズムが作成されます。 また、これにより、リフレクションや評価などのプロセスを使用せずに、言語内でリアルタイムのユーザー入力関数を使用できるようになります。
ファーストクラスの関数アーキテクチャの最も基本的な用途には、簡単に再利用できる汎用関数の作成や、進行に応じて方程式を自己修正できる再帰的な数学アルゴリズムの実装が含まれます。 ファーストクラスメカニズムの同様のより高度な使用法の1つは、具体的に実装されていない言語でのポリモーフィズムの実装です。 これにより、同じ関数シグネチャで関数を呼び出すことができますが、ポリモーフィック関数にキー関数を渡すことにより、呼び出されたコンテキストに基づいてコードを実行できます。