Composition
Composition, iki ya da daha fazla fonksiyonu birleştirerek yeni bir fonksiyon yaratma işlemi.
Matematikten, f() ve g() fonksiyonlarını düşünelim.f(g(x)) , bir composition işlemidir. Ve işlem sırası aşağıdaki gibidir
x
g
f
Esasında, ortaokul matematiğinde gördüğümüz fog yani bileşke fonksiyonlar.
c(x) = f(g(x))
Fonksiyonları birleştirirken kullanılan diğer temel fonksiyon türlerine göz atalım.
Curry, Partial ve Pipe Fonksiyonlar
Curry Fonksiyon
Bir fonksiyon, input olarak bir fonksiyon ve çoklu parametre alıp, output olarak tek parametreli bir fonksiyon dönüyorsa, bu bir curry fonksiyondur.
Partial Fonksiyon
Bir fonksiyon, input olarak, bir fonksiyon ve çoklu parametreler alır, output olarak daha az parametreyle bir fonksiyon dönüyorsa, bu bir partial fonksiyondur.
Pipe Fonksiyon
İki ya da daha fazla fonksiyonu input olarak alıp, parametre olan bu fonksiyonları, bir önceki fonksiyonunun outputu ile sırayla çalıştırabilecek şekilde ayarlayan ve output olarak bize tek fonksiyon dönen fonksiyonlar, pipe fonksiyonlardır.
Şimdi terimsel tanımlamaları geçip, bu fonksiyonları nasıl kullanacağız ona bakalım.
İlk önce kullanacağımız standart, fonksiyonlarımızı yazalım.
Şimdi de kullanacağımız pure fonksiyonlarımıza bakalım.
Bunları hep beraber, comeTogether adlı fonksiyonda pipe yardımı ile birleştirelim yani compose edelim.
Artık bir sürü iş yapan fonksiyonumuzu aşağıdaki şekilde çağırabiliriz.
Sahne arkasında neler olup bitti ?
İlk önce
multiply
fonksiyonu, 2 ve 4 ü çarpttı ve 8 buldu.multiply
'dan dönen 8 değerinidec
aldı ve 1 eksiltti, 7 buldu.dec
'den dönen 7 değeriniadd
fonksiyonu direkt alamadı. Çünkü o çoklu parametreyle çalışan bir fonksiyon olduğu içinpartial
fonksiyonunun yardımına ihtiyaç duydu.partial
fonksiyonu yardımı ileadd
fonksiyonu 7 yi aldı, 10 ve 3 ile toplayıp 20 değerini döndü.
Not: Burada bahsedilen, curry, partial ve pipe fonksiyonlarının içeriğini daha da ayrıntılı biçimde analiz edeceğimiz bir yazı yazmayı planlıyorum. Fakat bu kısıtlı zamanda şimdilik hem kendim için hem de ufak önbilgi edinmek isteyenler için bu kadarını paylaşmak istedim. Yoksa bu adı geçen fonksiyonlar yoktan var olmadı. Bilindik kısaltılmış es6 ile yazılan javascript fonksiyonları ama ilk bakışta ne olduğu ve anlaşılması zor fakat kullanımı itibari ile standart fonksiyonlar.
Kaynak: Master the JavaScript Interview: What is Function Composition
Last updated