On 30/12/2011 15:50, Gregg Reynolds wrote:
On Dec 30, 2011, at 10:34 AM, Artyom Kazak wrote:

Gregg Reynolds<d...@mobileink.com>  писал(а) в своём письме Fri, 30 Dec 2011 
17:23:20 +0200:

Regarding side-effects, they can be (informally) defined pretty simply:  any 
non-computational effect caused by a computation is a side-effect.
I wonder: can writing to memory be called a “computational effect”? If yes, 
then every computation is impure. If no, then what’s the difference between 
memory and hard drive?

Great question!  It suggests that the line between computation and its side 
effects is not as clear-cut as we (well, I) thought.
It relates to that while loop thing in my last reply to you, I think - the computational effect dressed up as non-computational.

We can do some work in Haskell using a temporary file on disk as a pragmatic solution to a space issue. We can feed that composed IO action to unsafePerformIO without breaking referential transparency, at least if we choose to ignore issues like running out of disk space (we ignore similar memory issues all the time).

And really, it's just explicit virtual memory - it's implicitly happening in the background anyway.

Or - it's layers of abstraction. The implementation of a function that uses explicit virtual memory is impure, but the abstraction it provides is pure. At least in principle (hand-waving away possible disk errors etc), the abstraction doesn't leak impurity.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to