• bilgisayar bilimleri dalinda, "function object"'in kisaltmasi. fonksyon olarak kullanilan objelerdir. c'de yoktur.
    function pointer'dan farki, bir fonksyonun baslangic adresine pointer tutmaktan ziyade, tum fonksyonu iceren bir yapi olusudur. ayrica fonksyonun kullandigi objeleri de icinde barindiriyor olabilir.

    matematikte ise bambaska bir kullanim alani var sanirim.

    ama en onemlisi, gunluk hayatta kullanilabilecek en geek kelimelerden bir tanesi olusudur. icinde "functor" gecen bir muhabbete kulak misafiri olan kisi, ortamin geekligini hemen anlamalidir.
  • (bkz: closure)
  • haskell'da uzerinde fmap'in nasil calisacagini tanimlayan yapilara denir..
    matematiksel olarak:
    fmap :: functor f => (a -> b) -> f a -> f b

    ornegin maybe monad icin, eger a tipindeki monad just ise, a tipindeki just degerinin a'dan b'ye olan fonksiyondaki sonucunu just ile sarip dondurecektir. ancak a tipindeki monad nothing ise, sonuc da nothing olacaktir.

    ozetle, monadik yapilarda boilerplate code yazmaktan kurtaran, basta urkutucu gelen, ancak sevimli, ailecek pek sevdigimiz bir olaydir.

    (her functor bir monad olmak zorunda degildir, ama her monad bir functor olmak zorundadir, bu da su sebeple.)

    edit: ingilizce olarak soyle cok guzel bir yazi bulunmaktadir bu olay hakkinda: http://adit.io/…atives,_and_monads_in_pictures.html
  • haskell'deki kullanimindan tamamen farkli olarak, standard ml'de bir structure'i arguman olarak alip baska bir structure donduren (ocaml terminolojisi ile module'dan module'a) fonksiyonumsu yapilara da functor denir.

    kategori kuramindaki functor ile ilgisini merak edenleri ise suraya alalim.
  • fonksiyon objelerine en basit örnek verilecek olursa toplama işlemi yapmak verilebilir.

    normalde sabit sayıyla bir toplama fonksiyonu yazıyorsanız buna "hardcoded" denir yani.

    int oniletoplama(int a){
    return a+10;

    }
    fonksiyonu içine atılan değeri 10 ile toplar.
    fonksiyon objesi yani functor bunu size dinamik bir şekilde sunabilir.
    şöyle ki;

    int istedigimsayiıletoplama adlı bir fonksiyon yapabilirim. böylece dışarıdan 1 tane değişken alabilirken aynı zamanda istediğim bir sayiyla toplama yapabilen dinamik bir fonksiyonum olur.

    örnek verelim hemen...

    class toplayicim
    {
    private:
    int numara;
    public:
    toplayicim(int numara) : num(numara) { }
    int operator () (int toplanacakdegisken) const {
    return num + toplanacakdegisken;
    }
    };

    bu sayede artık main fonksiyonda ilk önce bir "fonksiyon nesnesi" yaratıp o nesneye kaç ile toplama yapacağını söyleyebilirim..

    toplayicim fonksiyonobjemon(10);

    toplayicim fonksiyonobjemyirmi(20);

    artık elimde 1 tane 10 ile toplama yapan bir fonksiyon objem bir tane de 20 ile toplama yapan fonksiyon objem oldu. artık bu objeleri çağırarak ister 10 ile toplama yaptırabilirim ister 20 ile.
  • fonksiyonel programlamada bir kategoriden sunulan bir fonksiyon doğrultusunda yeni bir kategori oluşturan yapılardır. en bilinen uygulamaları çeşitli dillerde bulunan map fonksiyonlarıdır.

    (bkz: category theory)
    (bkz: apply)
hesabın var mı? giriş yap