高階関数の宣言のセクションで、(33 ページ)と書かれている「F#を使用した関数型プログラミング」という本を読んでいます。
(+) や (<<) などの高階組み込み関数を見てきました。
そしてセクションの最後に
高階関数は、代わりに、let 宣言で次のように引数を指定して定義することもできます。
let weight ro s = ro * s ** 3.0;;
ただし、今日以前に行った質問(当初は「いつ関数を高階関数として作成する必要があるか」というタイトルでした)の最後に、これらの例が実際により高いかどうかに疑問を投げかけているように見えるいくつかの役立つコメントがありました。注文機能。
高階関数のウィキペディアの定義は次のとおりです。
高階関数 (関数形式、関数関数またはファンクターも) は、次の少なくとも 1 つを実行する関数です。(i) 1 つまたは複数の関数を入力として受け取ります。(ii) 関数を出力します。
一方では、 のような関数は(+)
、weight
単一の引数を指定すると関数を返すため、高階関数と見なされる可能性があることがわかります。一方、カリー化された関数として適切に見なされていることがわかります。私は自習プロジェクトとして F# を学んでおり、概念を明確にしたいと考えているため、このサイトの回答と議論は特に役に立ちます。
私の質問は、これらの関数の正しい用語は何か、そしておそらくもっと重要なのは、「高階関数」と「カリー化された関数」という用語を通常どのように使用するかということです。