Có một quy ước đặt tên cho các chức năng bậc cao? Đó là, các hàm trả về các hàm khác.
Một ví dụ trong 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]
Tôi đã có xu hướng viết nó như trên: nghĩa là tối ưu hóa mức độ dễ đọc tại điểm gọi (Tôi đã đọc các dòng cuối cùng ở trên là "lọc mảng để lấy các mục chỉ chia hết cho 5"), tuy nhiên tại điểm định nghĩa đi từ ngữ cảnh được sử dụng, thật không dễ hiểu chức năng này làm gì từ tên của nó.