# Yüksek dereceli fonksiyon

Adres: https://softwaredictionary.org/tr/terimler/higher-order-function
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Higher-Order Function
Türkçe karşılığı: üst düzey fonksiyon, yüksek mertebeden fonksiyon
Okunuşu: hayır ordır fankşın

Kısaca: Yüksek dereceli fonksiyon, başka bir fonksiyonu argüman olarak alan, fonksiyon döndüren ya da ikisini de yapan fonksiyondur; davranış veri gibi taşınabilir.

## Yüksek dereceli fonksiyon (higher-order function) nedir?

Yüksek dereceli fonksiyon, diğer fonksiyonlarla değer olarak çalışan her fonksiyondur: parametre olarak bir fonksiyon kabul eder, yeni bir fonksiyon döndürür ya da her ikisini yapar. Bu, fonksiyonların birinci sınıf değer olduğu, yani sayılar veya dizeler gibi değişkenlerde saklanabildiği, argüman olarak aktarılabildiği ve döndürülebildiği dillerde mümkündür. JavaScript, Python, Kotlin, Swift, Rust ve neredeyse tüm diğer modern diller bunu destekler.

En bilinen örnekler `map`, `filter` ve `reduce` gibi dizi yardımcılarıdır. Her biri döngüyü sizin yerinize halleder ve yalnızca her öğeye ne yapılacağını anlatan küçük bir fonksiyon ister: nasıl dönüştürüleceği, tutulup tutulmayacağı ya da nasıl birleştirileceği. Fonksiyon döndüren fonksiyonlar da yaygındır; örneğin `fn`'in her çağrıyı günlüğe yazan bir sürümünü döndüren bir `withLogging(fn)` sarmalayıcısı ya da özelleştirilmiş doğrulayıcılar üreten bir fabrika gibi.

Yüksek dereceli fonksiyon, değiştirilebilir bıçaklara sahip bir mutfak robotu gibidir: makine motoru ve kabı sağlar, taktığınız bıçak ise dilimleyip, rendeleyip ya da karıştıracağına karar verir. Bu, kodu daha kısa ve yeniden kullanılabilir yapar; çünkü genel mekanizma bir kez yazılır ve yalnızca değişen kısım dışarıdan verilir.

Yüksek dereceli fonksiyonlar sıklıkla callback'lerle karıştırılır. Callback, aktarılan fonksiyondur; yüksek dereceli fonksiyon ise onu alan fonksiyondur. Dolayısıyla `items.map(double)` örneğinde `map` metodu yüksek dereceli, `double` ise callback'tir. Yüksek dereceli bir fonksiyondan döndürülen fonksiyonlar genellikle closure'dır, çünkü onları oluşturan fonksiyonun değişkenlerini hatırlarlar.

## Önemli noktalar

- Yüksek dereceli fonksiyon, girdi olarak bir fonksiyon alır, bir fonksiyon döndürür ya da her ikisini yapar.
- Birinci sınıf fonksiyonlar gerektirir; çoğu modern dil bunları destekler.
- `map`, `filter` ve `reduce` klasik örneklerdir.
- Aktarılan fonksiyon callback, onu alan fonksiyon ise yüksek derecelidir.

## Örnek: Fonksiyon almak ve döndürmek

```javascript
const prices = [12, 45, 7, 30];

// filter and map are higher-order: they take functions as arguments
const doubled = prices
  .filter((p) => p > 10)
  .map((p) => p * 2);

// A higher-order function that returns a new function
function multiplier(factor) {
  return (n) => n * factor;
}
const triple = multiplier(3);

console.log(doubled, triple(5)); // [24, 90, 60] 15
```

## Sık sorulan sorular

**Callback bir yüksek dereceli fonksiyon mudur?**

Genellikle hayır. Callback aktarılan fonksiyondur, onu kabul eden fonksiyon ise yüksek derecelidir. Bir callback ancak kendisi de fonksiyon alıyor veya döndürüyorsa yüksek derecelidir.

**Hangi diller yüksek dereceli fonksiyonları destekler?**

JavaScript, TypeScript, Python, Kotlin, Swift, C#, Rust, Go ve tüm fonksiyonel diller dahil birinci sınıf fonksiyonlara sahip her dil. Java bu desteği Java 8'de lambda'lar ve fonksiyonel interface'ler aracılığıyla ekledi.

**Döngüler yerine neden yüksek dereceli fonksiyonlar kullanılır?**

Tekrarlayan döngü kodunu gizler ve her öğeye ne yapılacağını anlatmanıza olanak tanır; bu da çoğu zaman daha kısa ve okunması daha kolaydır. Düz döngüler yine de uygundur ve mantığın çok adımı olduğu ya da erken durması gerektiği durumlarda bazen daha açıktır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
