readIO package:rebase

The readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program.
Read the value of an IORef. Beware that the CPU executing a thread can reorder reads or writes to independent locations. See Data.IORef#memmodel for more details.