Giriş
Modern programlama dillerinde sık kullanılan map,
filter, reduce desenlerinin kökü,
1930'larda Alonzo Church'ün geliştirdiği lambda hesabına uzanır —
bu, bilgisayarlardan önce var olan saf bir matematik sistemidir.
Lambda Hesabı
Lambda hesabı, hesaplamayı fonksiyon tanımlama ve uygulama
üzerinden ifade eden minimal bir sistemdir. $\lambda x. x + 1$
ifadesi, "x'i x+1'e götüren fonksiyon" anlamına gelir — modern
dillerdeki x => x + 1 ile birebir aynı fikir.
TANIM
Saf Fonksiyon (Pure Function)
Aynı girdi için her zaman aynı çıktıyı üreten ve dış dünyada (değişken, dosya, ağ) hiçbir yan etki yaratmayan fonksiyon. Matematikteki $f(x)$ tanımıyla birebir örtüşür.
Saf Fonksiyonlar Neden Önemli?
Bir matematik fonksiyonu gibi davranan kod, test edilmesi ve akıl yürütülmesi çok daha kolay bir koddur — girdisini bilmek, çıktısını bilmek için yeterlidir; gizli bir durum yoktur.
| Kavram | Matematik | Fonksiyonel Programlama |
|---|---|---|
| Dönüşüm | $f: A \to B$ | map |
| Alt küme seçimi | $\{x \mid P(x)\}$ | filter |
| Birleştirme | $\sum$ | reduce |
UYARI
Fonksiyonel stil her problem için en uygun çözüm değildir — bazı durumlarda (performans kritik döngüler, doğrudan durum yönetimi) klasik komut dizisi yaklaşımı daha okunaklı kalır.
Sonuç
Bir sonraki array.map() yazdığınızda, aslında
90 yıl önce kağıt üzerinde tanımlanmış bir matematiksel sistemi
kullandığınızı bilmek, kod yazmayı biraz daha ilginç kılabilir.