unsafeDupablePerformIO和accursedUnutterablePerformIO有什么区别?

问题描述 投票:5回答:1

我在Haskell图书馆的限制区中徘徊,发现了这两个卑鄙的咒语:

{- System.IO.Unsafe -}
unsafeDupablePerformIO  :: IO a -> a
unsafeDupablePerformIO (IO m) = case runRW# m of (# _, a #) -> a

{- Data.ByteString.Internal -}
accursedUnutterablePerformIO :: IO a -> a
accursedUnutterablePerformIO (IO m) = case m realWorld# of (# _, r #) -> r

但是,实际差异似乎只是在runRW#($ realWorld#)之间。我对他们在做什么有一些基本的想法,但是我并没有真正理解使用它们之间的真正后果。有人可以告诉我有什么区别吗?

haskell io unsafe unsafe-perform-io
1个回答
0
投票

考虑一个简化的字节串库。您可能具有由长度和分配的字节缓冲区组成的字节字符串类型:

© www.soinside.com 2019 - 2024. All rights reserved.