Pourquoi accursedUnutterablePerformIO (alias inlinePerformIO) mis en œuvre accursedUnutterablePerformIO :: IO a -> a
accursedUnutterablePerformIO (IO a) = case a realWorld# of (# _, r #) -> r
et no
Je sample :: MVar a -> IO [a]
sample v = do
a <- takeMVar v
pure (a:unsafePerformIO (sample v))
qui semble être un usage légitime de unsafePerformIO pour moi. Mais je suis très intéressé