I have a data type which contains an IORef as an important element. This means there is not a clean way to make it a member of the show
type class. This is not too bad as I have a print
function in the IO monad for this type. But it is annoying in GHCi in that every time I return one of these thing as a result I get an error stating that it cannot be shown.
Is there a way to get GHCi, which operates in the IO monad anyway, to use an IO action to show a result? If not, would there be any negative consequences to writing show a = unsafePerformIO $ print a
?