Create an unlifting function.
This function is
really unsafe because:
- It can be used to introduce arbitrary IO actions into pure
Eff computations.
- Unlifted Eff computations must be run in a way that's
perceived as sequential to the outside observer, e.g. in the same
thread as the caller of reallyUnsafeUnliftIO or in a worker
thread that finishes before another unlifted computation is run.
Warning: if you disregard the second point, you will experience
weird bugs, data races or internal consistency check failures.
When in doubt, use
unsafeSeqUnliftIO, especially since this
version saves only a simple safety check per call of the unlifting
function.