• bir fonksiyonun ciktisinin sadece girdisine bagli olmasi durumudur. ornegin karekok fonksiyonu, ne zaman, ne sartlar altinda calistirdiginizdan bagimsiz olarak ayni girdi icin daima ayni sonucu uretecektir. purely functional dillerin olmazsa olmazidir.

    (bkz: haskell)
  • örneğin

    result1 = ( f(a) + b ) / (f(a) - c);
    temp = f(a);
    result2 = ( temp + b ) / (temp - c);

    yaptığınızda eğer f fonksiyonunun yan etkisi* yoksa (parametresinin orijinal değerini veya dışarıdaki bir değişkeni değiştirmiyorsa) result1, result2'ye eşit olacaktır. olmuyorsa f fonksiyonu referential transparency'i ihlal ediyordur.
  • fonksiyonlar için aynı girdi için farklı çıktı vermeme özelliğidir. bu özellik fonksiyonların yan etkilerinin olmamasına dayanır ve ghc için graph reduction yapılabilmesini sağlar. bu özellik aynı zamanda kodun daha kolay paralelize edilebilmesini de sağlar. örneğin c dilinde aşağıdaki satırı yazarsak:

    if (foo() && bar())

    foo ve bar fonksiyonunun birbirlerinin sonuçlarını etkileyip etkilemeyeceğini bilemediğimiz için ikisini paralel çalıştırmamız kodun sonucuna etki edebilir. ama eğer bu iki fonksiyon referrentially transparent ise ikisi de aynı girdi için (0 girdi) her zaman aynı sonucu döndürecektir. ikisi de eğer boş çağırıldığında aynı değeri döndürüyorsa o zaman bu iki fonksiyonun değerlerini paralel hesaplayabiliriz.
hesabın var mı? giriş yap