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
ますか?