Skip to content

Comment on All computation is effectful (2009)

Comments

Here is a Haskell action, that has the effect of waiting for 5 seconds:

    sleep 5
This is in the IO monad and therefore impure. As we know, it is better to use pure functions when possible. Let us rewrite it as a pure function:
    seq $ [0..] !! 1000000000
This accomplishes the same thing with no side effects, and is therefore better. Please note that spinning up your CPU fan is not a side effect.

Joking of course, but it does illustrate the point. Functions take time and time is user-visible, thus all functions are effectful in that way. And C programmers will roll their eyes at the idea that `getpid` has side effects, while allocating a million node linked list does not.

Really this is just talking at cross purposes. Haskell's notion of purity and side effects lives not on the physical machine, but in a formalism, and ghc is its imperfect simulator.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.