Apakah ada konvensi penamaan untuk fungsi-fungsi tingkat tinggi? Yaitu, fungsi yang mengembalikan fungsi lainnya.
Contoh dalam 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]
Saya cenderung menulisnya seperti di atas: yaitu, mengoptimalkan keterbacaan pada titik doa (saya akan membaca baris terakhir di atas sebagai "filter array untuk mendapatkan barang yang hanya dapat dibagi 5"), namun pada titik definisi pergi dari konteks di mana ia digunakan, tidak begitu mudah untuk memahami apa fungsi ini dari namanya.
Jawaban:
Tidak, saya rasa Anda tidak perlu konvensi penamaan khusus untuk menunjukkan Anda mengembalikan fungsi. Seperti yang dapat kita lihat dari bahasa-bahasa di mana fungsi-fungsi digulung , mengembalikan fungsi pada dasarnya sama dengan memiliki fungsi dengan banyak argumen. misalnya ada sedikit perbedaan antara
onlyDivisibleBy(3)(6)
danonlyDivisibleBy(3,6)
Saya akan mengubah nama dari
onlyDivisibleBy
menjadiisDivisibleBy
karena saya pikiris
adalah cara yang lebih umum untuk menunjukkan predikat danonlyDivisibleBy(3)(6)
tampaknya aneh untuk kembalitrue
mengingat bahwa 6 jelas juga dapat dibagi 2.sumber
Dalam bahasa fungsional yang sangat diketik, jelas dari tanda tangan fungsi apa yang merupakan fungsi tingkat tinggi dan apa yang tidak, jadi tidak perlu.
Dalam bahasa lain, saya tidak pernah menemukan konvensi penamaan seperti itu dan saya tidak bisa memikirkan yang tidak praktis. Lebih baik berkonsentrasi pada fungsi penamaan dengan baik daripada membebani nama-nama seperti itu, saya pikir.
sumber
Tidak, dan Anda tidak boleh menggunakannya.
Mengapa?
Karena itu akan menjadi semacam notasi Hongaria . Idenya adalah persis bahwa fungsi yang diteruskan ke fungsi tingkat tinggi hanyalah semacam variabel. Jadi perlakukan mereka seperti itu.
sumber