第一級関数

読み:だいいっきゅうかんすう
外語:first-class functions 英語
品詞:名詞

プログラミング言語において、関数を通常の値のように操作できる機能をもつもの。

目次

例えばJavaは第一級関数に対応していないが、JavaScriptは全ての関数が第一級関数である。このため関数リテラルを変数に代入できる。

const sum = function (x, y) {
    return x + y;
}

sum(1, 2); // →結果は3

Cは関数ポインターを値のように扱えるため似たような使い方はできる。C++ではoperator()を持つ関数は関数をオブジェクトとして扱うことができ、これをファンクター(functor)と呼ぶことがある。しかし通常C/C++は第一級関数をサポートしているとはみなされない。

対応

関数型言語とスクリプト言語で対応する例が多い。

関数型言語ではLispとその派生(Schemeなど)、Haskell、MLとその派生(OCamlなど)などで使われている。

オブジェクト指向言語ではIo、Scala、Kotlinなどが対応する。

スクリプト言語ではPerlTcl/Tk、Lua 、ECMAScript(JavaScript)、PHPPythonRubyなど対応するものが多い。

高階関数

第一級関数に対応する言語では、関数の引数に関数リテラルを渡したり、関数の戻り値として関数リテラルを返すことができる。

このように、引数として関数を受け取ったり、戻り値として関数を返す関数は「高階関数」と呼ばれる。

JavaScriptのほかに、Kotlinなども第一級関数および高階関数に対応している。

用語の所属
関数
関連する用語
高階関数

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club