¿Cuál es la diferencia entre unsafeDupablePerformIO y accursedUnutterablePerformIO?

Estaba vagando por la Sección restringida de la Biblioteca Haskell y encontré estos dos hechizos viles: {- System.IO.Unsafe -} unsafeDupablePerformIO :: IO a -> a unsafeDupablePerformIO (IO m) = case runRW# m of (# _, a #) -> a {- Data.ByteString.Internal -} accursedUnutterablePerformIO ::...