Word8
, Word16
및 Word32
값이 많이 있다고 가정합니다. 나는 그것들을 넓히고 서명 된 것으로 해석하고 서명하지 않은 것을 해석하여 모든 것을 [Int64]
에 저장할 수 있습니다.부호없는 정수를 부호있는 것으로 해석하는 중
*Main> convert8 False 128
128
*Main> convert8 True 128
-128
:
convert8 :: Bool -> Word8 -> Int64
convert8 False i = fromIntegral i
convert8 True i = fromIntegral (fromIntegral i :: Int8)
이 나에게 내가 원하는 결과를 얻을 : 나는 첫 번째 인수가 서명 여부로 우리가 Word8
해석할지 여부를 지정합니다 다음과 같은 기능, 같은 것을 쓸 수있어 두 배 fromIntegral
는 저에게 우아하지 않다, 그러나 느낀다. "이 Word
을 부호있는 정수로 해석하여 더 큰 숫자로 Int
"이라고 말하는 것이 더 좋은 방법일까요?
'convert8 True = negate에 문제가 있습니까? 에서 '? –
음, 네, 부정을 원하지 않기 때문에 부호없는 정수가 부호로 해석되기를 원합니다. 그 'convert8 사실 1 == 1'. –
하지만'convert True '는 네가 부정적인 가치를 원한다는 것을 의미한다고 생각해. 그런 혼란스러운 디자인! 부울 값이 '참'이고 값이 음수이면 음수 값을가집니다. 부호가있는 유형 (즉, 부호가있는 유형의 양수 값의 범위를 벗어남)을 사용할 때 단어는 음수입니까? –