Here is another example. Consider two functions f and g which, given the same inputs, always return the same outputs as each other such as:

     f x = x + 2
     g x = x + 1 + 1

Now since f and g compute the same results for the same inputs, anywhere in a program that you can use f you could just replace f by g and the observable behaviour of the program would be completely unaffected. This is what referential transparency means.



Another example:

In haskell the following is true:

f x + g x == g x + f x

Pure functions in Haskell do not have side effects, so for the same inputs they always give back the same output. This is referential transparency. In a language such as C, which does not have referential transparency, the functions f and g may change x by a side effect and therefore:

f x + g x /= g x +  f x

In C (or a language with side effects).

Cheers,

Chris.

Christopher Brown
PhD Student, University of Kent.
http://www.cs.kent.ac.uk/people/rpg/cmb21/
[EMAIL PROTECTED]



_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to