Data.Int

Data.Int

Data.Int 모듈은 너비가 지정되지 않은(signed) 정수 타입(Int)과 고정된 너비의 정수 타입(Int8, Int16, Int32, Int64)을 제공해요.

출처: Haskell 2010 언어 리포트

본문

18.1 부호 있는 정수 타입 (Signed integer types)

이 모듈은 너비가 지정되지 않은 부호 있는 정수 타입(Int)과 고정된 너비의 정수 타입(Int8, Int16, Int32, Int64)을 제공해요. 모든 산술 연산은 2^n을 법(法, modulus)으로 하여 수행되는데, 여기서 n은 타입의 비트 수예요.

어떤 두 정수 타입 사이를 변환할 때는 fromIntegral을 사용해요. 워드(word) 타입(자세한 내용은 Data.Word 참고)을 정수 타입으로, 또는 그 반대로 변환할 때는 부호가 아니라 표현(representation)이 보존돼요.

Int처럼 유계(bounded) 타입 위의 Enum 인스턴스에 대해 성립하는 규칙들(해당 부분은 산술 수열(arithmetic sequences)을 다루는 Haskell 언어 리포트의 절을 참고)은 여기에 정의된 다양한 Int 타입 위의 Enum 인스턴스에도 그대로 성립해요.

타입의 너비보다 크거나 같은 양만큼 오른쪽·왼쪽으로 시프트하면 결과가 0 또는 -1이 돼요. 이는 시프트되는 값의 부호에 따라 달라져요. 이것은 정의되지 않아 있는(undefined) C에서의 동작과는 반대인데, C의 일반적인 해석 중 하나는 시프트 횟수를 타입의 너비로 잘라내는 것으로, 예를 들어 C 구현 중에는 1 << 32 == 1이 성립하기도 해요.

data Int

Int는 적어도 [-2^29 .. 2^29-1] 범위를 가진 고정 정밀도 정수 타입이에요. 주어진 구현에 대한 정확한 범위는 Prelude.Bounded 클래스의 Prelude.minBoundPrelude.maxBound를 사용해 알아낼 수 있어요.

instance Bounded Int
instance Enum Int
instance Eq Int
instance Integral Int
instance Num Int
instance Ord Int
instance Read Int
instance Real Int
instance Show Int
instance Ix Int
instance Storable Int
instance Bits Int
data Int8

8비트 부호 있는 정수 타입이에요.

instance Bounded Int8
instance Enum Int8
instance Eq Int8
instance Integral Int8
instance Num Int8
instance Ord Int8
instance Read Int8
instance Real Int8
instance Show Int8
instance Ix Int8
instance Storable Int8
instance Bits Int8
data Int16

16비트 부호 있는 정수 타입이에요.

instance Bounded Int16
instance Enum Int16
instance Eq Int16
instance Integral Int16
instance Num Int16
instance Ord Int16
instance Read Int16
instance Real Int16
instance Show Int16
instance Ix Int16
instance Storable Int16
instance Bits Int16
data Int32

32비트 부호 있는 정수 타입이에요.

instance Bounded Int32
instance Enum Int32
instance Eq Int32
instance Integral Int32
instance Num Int32
instance Ord Int32
instance Read Int32
instance Real Int32
instance Show Int32
instance Ix Int32
instance Storable Int32
instance Bits Int32
data Int64

64비트 부호 있는 정수 타입이에요.

instance Bounded Int64
instance Enum Int64
instance Eq Int64
instance Integral Int64
instance Num Int64
instance Ord Int64
instance Read Int64
instance Real Int64
instance Show Int64
instance Ix Int64
instance Storable Int64
instance Bits Int64

더 알아보기 (Learn more)

  • 부호 없는(unsigned) 대응 타입에 대한 내용은 Data.Word 모듈을 참고해요.
  • Bits·Ix·Enum 클래스가 이 고정 너비 정수 타입들에 어떻게 적용되는지는 각 클래스 문서를 함께 보면 좋아요.