4
하스켈을 배우기 시작했는데, 일반적으로 훌륭했지만, 타입 클래스 시스템의 몇몇 특수성은 수치 중심 프로젝트에서 많은 좌절을 불러 왔습니다. 내가 ghci를 열고 추가의 종류를 확인하는 경우 구체적인 예를 들어, 내가 얻을 :하스켈 타입 클래스 혼란
Prelude> :t (+)
(+) :: Num a => a -> a -> a
추가는 Num
은 가장 일반적인 유형의 클래스, 등, 그래서 모든 것이 의미가 있습니다, 슈퍼 제네릭이다. 그러나 일부 기능을 추가로 선언 한 다음 의 유형을 확인하면 기능을 사용하면 유형 클래스가 Integer
으로 축소됩니다!
Prelude> let add = (+)
Prelude> :t add
add :: Integer -> Integer -> Integer
그래서 ... 무슨 일 이니?