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