This is scary though. This is the first leak I've found in the referential
transparency abstraction in Haskell (besides unsafePerformIO). And the problem
is, if I don't have referential transparency for 100% of pure functions, then I
have to be suspicious of every one.