data A = A ()
newtype B = B ()
[() | A _ <- [undefined]] = undefined
[() | B _ <- [undefined]] = [()]
newtype의 constructor는 컴파일할때 사라짐
그래서 B undefined :: B 하고 undefined :: B 가 완전히 동치임.
조금이나마 성능을 추구한다면 newtype을 쓰는게 이롭다
data A = A ()
newtype B = B ()
[() | A _ <- [undefined]] = undefined
[() | B _ <- [undefined]] = [()]
newtype의 constructor는 컴파일할때 사라짐
그래서 B undefined :: B 하고 undefined :: B 가 완전히 동치임.
조금이나마 성능을 추구한다면 newtype을 쓰는게 이롭다
래퍼타입 설탕이냐
그냥 기존 타입을 완전히 복제해서 새로운 타입으로 쓰는거.
레퍼타입은 그냥 data 키워드로 정의하는거에 가깝고
와 그래서 키워드가 따로 있구나 - dc App
잡지말하는줄
고랭의 type Newtype ExistingType과 비슷함 - dc App