假设我有很多 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”?