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