高階関数の命名規則はありますか?つまり、他の関数を返す関数です。
JavaScriptの例:
function onlyDivisibleBy(div) { // <-- higher order function
return function (n) {
return n % div === 0;
}
}
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.filter(onlyDivisibleBy(3)); // [0, 3, 6, 9]
arr.filter(onlyDivisibleBy(5)); // [0, 5]
私はそれを上記のように書く傾向がありました:つまり、呼び出しポイントでの読みやすさの最適化(上記の最後の行を「配列をフィルターして5で割り切れる項目を取得する」と読みました)使用されているコンテキストから、この関数がその名前から何をするのかを理解するのはそれほど簡単ではありません。
4
それは驚くべきことでした。「高階関数」という用語は、別の関数を引数として受け入れる関数を意味すると常に理解していました。私はあなたが間違っていると言っているのではなく、私たちの理解の違いが面白いと思うだけです。
—
ラチェット
関数を返す@Racheet関数も高次です。彼らは両方をするかもしれません。
—
itsbruce
@Racheetは良い点であり、この例に非常に関連しています。OPが実際に実装しているのは部分的なアプリケーションです。関数が返される場所の多く(すべて?不明)は、代わりに部分的なアプリケーションとして表示できます。@ nickf: ここにあなたの例を実装するためのクリーンな方法だ