プログラミング言語、特にLispやSchemeを勉強していると、たまに「ファーストクラスのオブジェクト」や「第一級の関数」などを目にすることがあります。 しかし、「ファーストクラス」とか「第一級」というのは、いったい何なのでしょう。 その答えは、『Structure and Interpretation of Computer Programs(計算機プログラムの構造と解釈)』の1.3.4にある「Procedures as Returned Values」に記述がありました。 In general, programming languages impose restrictions on the ways in which computational elements can be manipulated. Elements with the fewest restrictions are