Fun blog post on the subtleties of lazy IO in Haskell: https://ianthehenry.com/2016/3/9/lazy-io/