假设我有很多 type Word8
,Word16
和的值Word32
。我想扩大它们,将一些解释为已签名,一些解释为未签名,以便我可以将它们全部存储在[Int64]
. 我知道我可以编写类似以下函数的内容,其中第一个参数指定我们是否要解释Word8
为带符号的:
convert8 :: Bool -> Word8 -> Int64
convert8 False i = fromIntegral i
convert8 True i = fromIntegral (fromIntegral i :: Int8)
这给了我想要的结果:
*Main> convert8 False 128
128
*Main> convert8 True 128
-128
不过,替身fromIntegral
对我来说并不优雅。有没有更好的方式来表达“将其解释Word
为有符号整数并将其粘贴在更大的位置Int
”?