Hi,
As far as I understood the matter, referential transparency
denotes the property of a language, in which variables of the
same scope do not change their value. 

Given
>let var = <some unmonadic expression>
>      ...
>       ...   -- some calculation 
>         <some monadic expression>
>       ...
>       f var     
>
, 'f var' is called with the same value var has been bound to, no
matter, what <some monadic expression> did. 

Monadic IO is not thought ( in my opinion) to have IO during 
_the whole_ program, while preserving the referential transparency.
Monads are fine to encapsulate effects, and so the IO Monad
encapsulates input/output effects _to preserve_ the referential
transparency of _the rest_ of the program. A good program
(IMHO) restricts the use of monads to where they are needed, to
increase the sideeffect free part of the program. 

Correct me, if I am wrong. 

Regards, 
Wolfgang


---------------------------------------------------------------
Wolfgang Lohmann        
[EMAIL PROTECTED]
http://www.informatik.uni-rostock.de/~wlohmann/
---------------------------------------------------------------





Reply via email to