LoginSignup
1
1

「第一級関数」←どのへんが第一級なんだ??

Last updated at Posted at 2023-05-22

第一級関数とは

JavaScriptやPythonを学習していると、「第一級関数」というワードに遭遇することがよくあります。
ざっくりとした意味を説明すると、「第一級関数」とは、単なる値として扱われる関数を意味します。
例えば、JavaScriptでは関数を変数に格納できます。

// 変数に関数を格納できる
const add = function(x, y){
    return x + y;
}

console.log(add(1, 2)); // 3と表示される

さらに、関数の引数に他の関数を取ることも可能です。これは一般的にコールバック関数と呼ばれます。

function helloGoodbye(text) {
    text();
    console.log('さようなら');
}

function hello(){
    console.log('こんにちは');
}

// 関数の引数に関数をとる
helloGoodbye(hello) 
// こんにちは
// さようなら

この他にも関数を結果として返すことができたり、データ構造に格納できたりといった特性があります。

そんな第一級関数ですが、学習中の自分にとっては、先述のような機能がまとめて「第一級」と表現されていることが疑問でした。

関数を値として扱うことのどこが「第一級」なんだ。。?

個人的に、言葉の意味と内容に繋がりを感じる方が、内容の記憶がしやすい質なので語源を調べました。

第一級関数の本質

どうやら「第一級」とは「言語の全ての特性を自由に利用できる」という点を指しているようです。

そもそも第一級関数とは、1960年代にコンピュータ科学者であるクリストファー・ストラッチーによって導入された表現で、「第一級の市民(functions as first-class citizens)」とも呼ばれています。

冒頭でも触れた通り、第一級関数は変数に代入できたり、関数の引数にできたり、さまざまな言語の特性を自由に利用できます。

その点を指して「第一級の市民」と表現するあたり、クリストファー・ストラッチーもなかなかブラックですね。

おわりに

今回はJavaScriptの学習中に気になった「第一級関数」について深掘ってみました。
それぞれの概念が持つ意味を理解することで、より深くプログラミング言語を理解できます。
次に「第一級関数」を見かけた時は、ぜひその背後にある概念と考え方を思い出してみてください。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1