我试图生成一个ByteString
与ByteString
我已经拥有的懒惰相同长度的随机懒惰.
所以我把它的长度ByteString
和它getEntropy
一样喂它:
import qualified Data.ByteString.Lazy.Char8 as L
import qualified System.Entropy as SE
string :: L.ByteString
string = L.pack "Hello world!"
randomString :: IO L.ByteString
randomString = L.fromChunks . (:[]) <$> SE.getEntropy (L.length string)
Run Code Online (Sandbox Code Playgroud)
(L.fromChunks . (:[])
用于从严格ByteString
转换为惰性转换.)
问题是,SE.getEntropy
是类型Int -> IO ByteString
,而L.length
为型L.ByteString -> GHC.Int.Int64
.
我如何将其转换Int64
为Int
?
Zet*_*eta 10
您可以使用以下任意Integral
类型将其转换为其他Num
类型fromIntegral
fromInt64ToInt :: Int64 -> Int
fromInt64ToInt = fromIntegral
Run Code Online (Sandbox Code Playgroud)