On Thu 07 Oct, Joe English wrote:
> The way I understand the term "referntially transparent",
> it means that if you have
> 
> let x = y in z
> 
> then you can substitute all free occurrences of 'x' in 'z'
> with 'y', or vice versa, without changing the meaning of
> the expression.  This is true in Haskell even if 'y' has
> type 'IO a'.  (For example, "the action which, when performed,
> returns the contents of the file /var/log/messages" always
> _means_ the same thing, even though it may _do_ different things
> each time it's performed.)

As you say, I think the problem is predictability of the results of
_invoking_ actions. I'm quite happy with the idea of an action as a
value which does not damage referential transparency if it appears
in an expression.

Regards
-- 
Adrian Hey




Reply via email to