>>1
It's simple actually, a function could have side-effects during its execution(internally), but still be referetially transparent.
I'll give an example in C, as I don't know what languages you know:
Referentially transparent and pure:
int add1(int x)
{
return (x+1);
}
Referentially transparent, has side-effects:
int add1(int x)
{
return ++x; // x is incremented then returned,
// however it does not affect anything
// outside the context of this function
}
The second function has internal side-effects, but is referentially transparent.
The book "On Lisp" can show you more examples of this if you know some Lisp.
[/code]