Open PingPingE opened 9 months ago
사실 기술하신 정도로 이해해도 아직까지는 큰 무리가 없습니다.
근데 이제 상속이라고 할 때 문제가 typeclass랑 class랑 헷갈리기 시작해서 (typeclass를 메서드를 갖고있는 부모클래스 정도로 해석) 나중에가면 보정이 필요한 부분이 생길 수 있습니다.
그나마 가장 심플하고 비교적 정확한 해석은 typeclass는 행위(메서드)를 가지고 type은 데이터(값)를 가진다고 보면 맞을 것 같습니다.
예를들면 Int의 경우 -1, 0, 1 모두 값이죠. 근데 Int는 그림에서 보면 Ord와 Num을 만족합니다(상속받는다와는 조금 다른 표현) Int는 그 특성상 정렬가능하고 숫자 데이터라는 의미로 볼 수 있습니다
이제 저 의미를 어떻게 Int에게 부여하냐면 int로 할 수 있는 행위, 연산, 메서드로 표현합니다. 정렬 가능하다는 것은 대소비교를 할 수 있다는 것과 같은 의미라서 Ord는 대소비교 연산자를 메서드로 갖는것이고 Int는 그 연산자를 쓸 수 있는 타입입니다.
typeclaas에서 class가 들어갔다고 해서 OOP의 class라고 각인하는 순간 엄청난 혼란이 올 수 있다는것 우선 알려드리고 만약 굳이 비교하신다고 하면
Type -> Class Interface -> Typeclass
로 비교하시는게 차라리 가깝습니다
혹시나 Rust나 Swift, Scala 를 접하신 분이 계시다면 Trait, Protocol의 모티브가 Typeclass라고 보시면 되겠습니다
뭐가 타입이고 뭐가 타입 클래스인지 너무 헷갈리는데 위키에 있는 아래 이미지를 보고 이해를 조오금 하기 시작했는데 피드백 부탁드립니닷
위 hierarchy에 따르면...