We really should use a monad for calculations rather than `unsafePerformIO`.
We really should use a monad for calculations rather than
unsafePerformIO.