Possible runtime overhead of wrapping the IO monad?