• functional programming'de cok onemli bir kavramdir. bir fonksiyonun degeridir; parametreleri, environmenti, bir de fonksiyonun bodysini iceren bir tupledir. soyle ki:

    let s = fun(x) -> x * x
    in s 2

    burada oncelikle fun(x) -> x * x evaluate edilir. degeri (x, {}, x * x) closure'udur. ilk eleman parametreler, ikincisi o anki environment, ucuncusu de fonksiyonun body'si. bunu s'ye atariz. sonra, (s 2) kismini evaluate etmeye gelir sira, ki bu bir function applicationdir. s bize closure'u verir, sonra x parametresine 2'yi atariz, onu environment'a koyariz, x*x 'i hesaplariz. environment'ta x'in degeri artik 2 oldugundan, sonuc 4 olarak geri doner.

    closureda environment'i sadece static scoping olan bir dilde saklariz,dynamic scoping varsa gerek yoktur.
5 entry daha
hesabın var mı? giriş yap