
On Fri, Jul 27, 2012 at 07:19:40PM +0100, Chris Dornan wrote:
So a language is referentially transparent if replacing a sub-term with another with the same denotation doesn't change the overall meaning?
Isn't this just summarizing the distinguishing characteristic of a denotational semantics?
Right, so where's the substance here?
My understanding is that RT is about how easy it is to carry out _syntactical_ transformations of a program that preserve its meaning. For example, if you can freely and naively inline a function definition without having to worry too much about context then your PL is deemed to possess lots of RT-goodness (according to FP propaganda anyway; note you typically can't freely inline function definitions in a procedural programming language because the actual arguments to the function may involve dastardly side effects; even with a strict function-calling semantics divergence will complicate matters).
Ah, but we only think that because of our blinkered world-view. Another way of looking at it is that the denotational semanticists have created a beautiful language to express the meanings of all those ugly languages, and we're programming in it.