Jaka jest różnica między unsafeDupablePerformIO i exactedUnutterablePerformIO?

Wędrowałem w Dziale Ograniczonym Biblioteki Haskell i znalazłem te dwa ohydne zaklęcia: {- System.IO.Unsafe -} unsafeDupablePerformIO :: IO a -> a unsafeDupablePerformIO (IO m) = case runRW# m of (# _, a #) -> a {- Data.ByteString.Internal -} accursedUnutterablePerformIO :: IO a ->...