Utility for lifting IO computations of type
IO a -> IO bto
Eff es a -> Eff es bThis function is really unsafe because:
It can be used to introduce arbitrary IO actions into pure Eff computations.
The IO computation must run its argument in a way that's perceived as sequential to the outside observer, e.g. in the same thread or in a worker thread that finishes before the argument is run again.
Warning: if you disregard the second point, you will experience weird bugs, data races or internal consistency check failures.
When in doubt, use unsafeLiftMapIO, especially
since this version saves only a simple safety check per call of
reallyUnsafeLiftMapIO f.